在构建一个Angular指令来包装bootstrap选择器时,我遇到了一个问题,即bootstrap对元素有一个默认样式,而我需要覆盖它。因此,我有3个选项:
- 更改默认值
- 使用!important
- 增加样式的特异性
我不想更改默认值,因为它在其他地方仍然有价值。
这是html代码:
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
Dropdown
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
</ul>
</div>
讨厌的 Bootstrap CSS 是:
ul.dropdown-menu {
...
padding: 5px 0;
...
}
我想把左侧的填充增加到50像素(我正在构建一棵树)。所以我的选项是:
custom-directive li {
padding-left: 50px !important;
}
或者您可以像这样增加特定性:
.dropdown-menu custom-directive li {
padding-left: 50px;
}
一般建议避免使用
!important
,但是使用!important
和高特异性有什么优缺点呢?代码已经被简化为一个问题。
!important
,它也会影响其他的标签和元素,可能会导致你无意中影响到的其他元素。如果你有选择的话,我会倾向于使用更具体的指定方式,而不是使用!important
。 - disinfor!important
结合使用。!important
标志的优点是它是唯一一个能够真正覆盖在style
属性和其他!important
声明中进行的声明的选择器。你应该明智地使用!important
,并尽可能少地使用它。你的选择器应该尽可能具体,但不要过度。这样工作可以使你以后扩展代码成为可能。 - Nico O!important
是唯一可以覆盖style
属性中声明的内容的东西。 - nephiw