我的 scss 没有覆盖框架 css UIkit
my scss is not overriding framework css UIkit
我在使用 scss 覆盖框架 css 规则时遇到问题。
如果我添加 !important
,一切正常......我应该怎么做才能在不使用该规则的情况下正常工作?
.html代码:
<nav class="uk-navbar-container" uk-navbar>
<div class="uk-navbar-left">
<ul class="uk-navbar-nav">
<li class="uk-active"><a href="#">Active</a></li>
<li>
<a href="#">Parent</a>
<div class="uk-navbar-dropdown">
<ul class="uk-nav uk-navbar-dropdown-nav">
<li class="uk-active"><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
</li>
<li><a href="#">Item</a></li>
</ul>
</div>
</nav>
.scss代码:
.uk-navbar-container {
background: #383c4a;
}
同样,如果我添加 !important
,我的导航栏会改变颜色...
你的问题是 .uk-navbar-container:not(.uk-navbar-transparent)
比你的 .uk-navbar-container
规则更具体。另一点是通常你不想为了一个修复而覆盖框架的规则,因为它会影响你的整个代码库。
解决问题的一种方法是添加更具体的规则,例如
.uk-navbar-container.--grey {
background: #383c4a;
}
... 然后在 html
<nav class="uk-navbar-container --grey" uk-navbar>
只有在 after .uk-navbar-container:not(.uk-navbar-transparent)
之后定义了规则,这才有用,因为它们具有相同的特异性,最后一个将被应用。我附上了一个片段来演示它是如何工作的。
阅读有关 specificity to get better understanding of the problem, and also you might want to check out this article 的更多信息以及 not
的示例。
body {
font-size: 22px;
}
.test:not(.another) {
color: blue;
}
.test {
color: red;
}
.test.green {
color: green;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div class="test">I'm blue</div>
<div class="test green">I'm green</div>
</body>
</html>
我在使用 scss 覆盖框架 css 规则时遇到问题。
如果我添加 !important
,一切正常......我应该怎么做才能在不使用该规则的情况下正常工作?
.html代码:
<nav class="uk-navbar-container" uk-navbar>
<div class="uk-navbar-left">
<ul class="uk-navbar-nav">
<li class="uk-active"><a href="#">Active</a></li>
<li>
<a href="#">Parent</a>
<div class="uk-navbar-dropdown">
<ul class="uk-nav uk-navbar-dropdown-nav">
<li class="uk-active"><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
</li>
<li><a href="#">Item</a></li>
</ul>
</div>
</nav>
.scss代码:
.uk-navbar-container {
background: #383c4a;
}
同样,如果我添加 !important
,我的导航栏会改变颜色...
你的问题是 .uk-navbar-container:not(.uk-navbar-transparent)
比你的 .uk-navbar-container
规则更具体。另一点是通常你不想为了一个修复而覆盖框架的规则,因为它会影响你的整个代码库。
解决问题的一种方法是添加更具体的规则,例如
.uk-navbar-container.--grey {
background: #383c4a;
}
... 然后在 html
<nav class="uk-navbar-container --grey" uk-navbar>
只有在 after .uk-navbar-container:not(.uk-navbar-transparent)
之后定义了规则,这才有用,因为它们具有相同的特异性,最后一个将被应用。我附上了一个片段来演示它是如何工作的。
阅读有关 specificity to get better understanding of the problem, and also you might want to check out this article 的更多信息以及 not
的示例。
body {
font-size: 22px;
}
.test:not(.another) {
color: blue;
}
.test {
color: red;
}
.test.green {
color: green;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div class="test">I'm blue</div>
<div class="test green">I'm green</div>
</body>
</html>