我在我的设计的某些部分使用 bootstrap 和 dataTable,问题是一些 css 样式的 bootstrap 应用于 dataTable,这个问题不仅仅是这些库,所以我认为存在一些我可以优先考虑的东西我的风格或图书馆风格。有人知道我该怎么做才能应用我的 css 的优先级,或者我需要重置 css 样式。
2 回答
简短的回答是:
使用!important
/* In a stylesheet */
p { color:red !important }
/* In a inline-style */
<p style="color:red !important;">This text will stay red</p>
在正常情况下,在页面中“稍后”应用样式并具有更高的选择器优先级会覆盖先前设置的属性。
但是,使用 twitter bootstrap 之类的 javascript 框架,css 样式可以在页面加载后直接应用于 html 元素,从而取代您可能做的任何事情。根据使用的代码,有些甚至可以清除之前定义的所有内联样式。为了克服这个问题,您可以将此 JQuery 代码放在要更改的元素之前。
$('#elem').attr('style', $('#elem').attr('style') + '; ' + 'color: red !important');
现在,对于长答案...
使用以下 HTML
<p class="MyStyle" id="MyId">
MyText
</p>
CSS 样式根据以下 3 条规则按顺序应用(规则 2 胜过规则 1):
1. 规则按照浏览器读取的顺序应用(从上到下):
<style type="text/css">
p { color:blue; }
p { color:red; }
</style>
/* Red wins */
内联样式是最后应用的
<p style="color:yellow">
MyText
</p>
/* Yellow wins */
2. 最具体的规则选择器获胜(棘手的部分)
使用此优先级中规则的编号或选择器计算特异性:(#id,.class,element)
/* One element =1 */
p { color:blue } /* (0,0,1) =1 */
/* One class =10 */
.MyStyle { color: yellow } /* (0,1,0) =10 */
/* One Id =100 */
#MyId { color: silver } /* (1,0,0) =100 */
/* 2 elements =2 */
p a { color:red } /* (0,0,2) =2 */
/* One element and one class =11 */
p.MyStyle { color: green } /* (0,1,1) =11 */
/* 2 elements and 2 classes =22 */
div.MyOtherStyle p.MyStyle { color: black } /* (0,2,2) =22 */
/* One Id, one class and one element =111 */
p#MyId.MyStyle { color:gold } /* (1,1,1) =111 */
/* 11 elements =11 See lower to know why this does not win over 1 class (10) */
ul li ul li ul li ul li ul li ul li { color:red } /* (0,0,11)=11 */
/* Gold wins */
Id 总是战胜阶级,阶级总是战胜元素,不管他们的数量如何。这里有一些例子:
问:/如果我有一个 11 个元素的选择器,它会赢得 1 个类(=10)吗?
R:/即使 11 大于 10,优先级始终是 id,class,element。在这种情况下,您需要使用 (0,0,0) 中的每个位置多一位数字来计算样式中的所有数字。例如:(1,1,1)=111 将变为 (100,10,1)=100101。因此,11 个元素将是 (0,0,11)=11,1 个类将是 (0,10,0)=100。
这相当于对 (a,b,c) 进行此数学运算:(a*100, b*10, c)。如果您的选择器中有超过 101 个元素,请找到新工作或使用 (a*1000, b*100, c)。
3. !important 统统
在使用 !important 之前,您应该尝试 1 和 2
是的,您应该使用 css 重置 - 查看 normalize ( http://necolas.github.io/normalize.css/ )
为了优先考虑,样式总是会覆盖以前的样式。因此,例如,如果您的样式表中有重复的规则,一个在(比如说)第 50 行,另一个在第 100 行,则后者将具有优先权。