CSS继承与优先级原则
样式的继承可以减少对子元素样式的重复定义,想font-family这类可继承的样式会把属性继承给子元素。但background-color、border等属性不会被子元素继承。可以通过将属性值设置为inherit来强制大多数元素从它的父元素中继承属性值。
当网页同时使用了行内样式,内嵌式样式,链接式样式和导入式样式时,将会出现优先级的问题。
遵循优先级原则:
- 选择器都有一个权值,权值越大越优先。内联样式表的权值最高1000,id选择器的权值为100,class类选择器的权值为10,HTML标签选择器的权值为1,复合样式的权值据上面选择器的权值从左向右相加得出。如:#nav.main li a{}的权值为:100+10+1+1=112。
- 就近原则。如果两个选择器完全相反,后出现的选择器优先级越高。一般而言,样式优先级从低到高的顺序是:导入式——内嵌样式表——外部样式表——行内样式。行内样式拥有最高的优先权,导入样式优先权最低,但如果外部样式放在内部样式的后面引入,则外部样式将覆盖内部样式。
- 具体性原则。如果一个选择器比其他选择器更加具体,具体的选择器优先于一般的选择器。如h3比*具体,h3 span比h3具体。
- 重要性。给CSS属性值添加!import来强调这条规则比应用于同一元素的其他规则更重要,优先级最大。
- 创作者的规则高于浏览者。即网页编写者设置的CSS样式的优先权高于浏览器所设置的样式。
- 继承的CSS样式不如后来指定的CSS样式。