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器的特殊性。

让我们试着用一个例子简化级联规则。 规则更具体到一般。

  1. 首先应用ID的规则(不pipe顺序和类别)
  2. 无论顺序如何,都通过元素应用类
  3. 如果没有类或id,则应用通用的
  4. 将相同组/级别的订单中的最后一个样式(基于文件加载顺序的声明订单)应用。

这里是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/当我开始前端开发,这个页面清除了这么多的问题。;