CSS样式表的重写顺序是什么?
在一个HTML头里,我有这个:
<head> <title>Title</title> <link href="styles.css" rel="stylesheet" type="text/css"/> <link href="master.css" rel="stylesheet" type="text/css"/>
styles.css
是我的页面特定工作表。 master.css
是我在每个项目上用来覆盖浏览器默认值的工作表。 哪个样式表优先? 例如:第一张纸包含特定的
body { margin:10px; }
和相关的边界,但第二个包含我的重置
html, body:not(input="button") { margin: 0px; padding: 0px; border: 0px; }
从本质上讲,CSS的级联元素在样式表引用方面是否与典型的CSS函数一样工作? 意思是最后一行是显示的那一行?
CSS规则级联的规则是复杂的 – 而不是试图重述它们,我只是简单地引用你的规范:
http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade
总之:更具体的规则覆盖更一般的规则。 特定性是根据涉及的ID,类和元素名称以及是否使用!important
声明来定义的。 当存在多个相同的“特异性水平”的规则时,无论哪一个出现在最后一个胜者。
最具体的风格应用:
div#foo { color: blue; /* This one is applied to <div id="foo"></div> */ } div { color: red; }
如果所有select器具有相同的特征,则使用最近的删除:
div { color: red; } div { color: blue; /* This one is applied to <div id="foo"></div> */ }
在你的情况下, body:not([input="button"])
更具体,所以它的样式被使用。
订单确实重要。 最后申报的多次出现的价值将被采取。 请参阅我制定的同一个: http : //jsfiddle.net/Wtk67/
<div class="test">Hello World!!</div> <style> .test{ color:blue; } .test{ color:red; } </style>
如果您交换.test{}
的顺序,那么您可以看到CSS中声明的最后一个HTML值
这取决于加载顺序和应用于每种风格的实际规则的特殊性。 鉴于你的问题的上下文,你想先加载你的一般重置,然后页面特定。 那么如果你还没有看到预期的效果,那么你需要查看其他人已经指出的select器的特殊性。
让我们试着用一个例子简化级联规则。 规则更具体到一般。
- 首先应用ID的规则(不pipe顺序和类别)
- 无论顺序如何,都通过元素应用类
- 如果没有类或id,则应用通用的
- 将相同组/级别的订单中的最后一个样式(基于文件加载顺序的声明订单)应用。
这里是CSS和HTML代码;
<style> h2{ color:darkblue; } #important{ color:darkgreen; } .headline { color:red; } article { color:black; font-style:italic; } aside h2 { font-style:italic; color:darkorange; } article h2 { font-style: normal; color: purple; } </style>
这是CSS风格
<body> <section> <div> <h2>Houston Chronicle News</h2> <article> <h2 class="headline" id="important">Latest Developments in your city</h2> <aside> <h2>Houston Local Advertisement Section</h2> </aside> </article> </div> <p>Next section</p> </section>
结果如下。 无论样式文件或样式声明的顺序如何,最后应用id="important"
(注意class="deadline"
声明的class="deadline"
但不起任何作用)。
<article>
元素包含<aside>
元素,但是最后声明的样式将会生效,在这种情况下, article h2 { .. }
在第三个h2元素上。
这里是IE11的结果:(没有足够的权利来张贴图片)DarkBlue:休斯敦纪事报新闻,DarkGreen:你的城市的最新发展,紫色:休斯顿当地广告部分,黑色:下一节
最后一个加载的CSS是THE MASTER,它将覆盖所有具有相同CSS设置的CSS
例:
<head> <link rel="stylesheet" type="text/css" href="css/reset.css"> <link rel="stylesheet" type="text/css" href="css/master.css"> </head>
reset.css
h1 { font-size: 20px; }
master.css
h1 { font-size: 30px; }
h1标签的输出将是font-size:30px;
最好的方法是尽可能多地使用类。 无论如何避免IDselect器(#)。 当你只用一个类来编写select器时,CSSinheritance就更容易了。
更新:在本文中阅读更多关于CSS特殊性的内容: https : //css-tricks.com/specifics-on-css-specificity/
我怀疑你的问题是你有重复的select,一个主集,所有页面,以及一个更具体的设置,你想覆盖每个单独的页面的主值。 如果是这样,那么你的订单是正确的。 Master首先被加载,并且后续文件中的规则将优先(如果它们是相同的或具有相同的权重)。 在这个网站有一个强烈推荐的所有规则的描述http://vanseodesign.com/css/css-specificity-inheritance-cascaade/当我开始前端开发,这个页面清除了这么多的问题。;