CSS 的权重和优先级?

258 阅读1分钟

样式类型

  1. 行间
  • 直接在标签上书写CSS样式
  1. 外部
  • 通过link引入外部样式文件
  1. 内联
  • 通过style书写与页面head标签内

CSS选择器类型

  1. ID  #id
  2. class  .class
  3. 标签  p
  4. 通用  *
  5. 属性  [type="text"]
  6. 伪类  :hover
  7. 伪元素  ::first-line
  8. 子选择器、相邻选择器

权重计算规则

  1. 一等:代表内联样式,如: style=””,权值为1000。
  2. 二等:代表ID选择器,如:#content,权值为0100。
  3. 三等:代表类,伪类和属性选择器,如.content,权值为0010。
  4. 四等:代表类型选择器和伪元素选择器,如div p,权值为0001。
  5. 通配符、子选择器、相邻选择器等的。如*、>、+,权值为0000。
  6. 继承的样式没有权值。

比较规则

  1. 选择器都有一个权值,权值越大越优先;
  2. 当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
  3. 创作者的规则高于浏览者:即网页编写者设置的 CSS 样式的优先权高于浏览器所设置的样式;
  4. 继承的 CSS 样式不如后来指定的 CSS 样式;
  5. 在同一组属性设置中标有!important规则的优先级最大
  6. 通配符、子选择器、相邻选择器等的。虽然权值为0000,但是也比继承的样式优先。

!important

  1. !important 的作用是提升优先级,换句话说。加了这句的样式的优先级是最高的(比内联样式的优先级还高)。
  2. ie7+和别的浏览器对important的这种作用的支持度都很好。只有ie6有些bug