CSS特殊性、继承与层叠

所属分类: 网页制作 / CSS 阅读数: 1284
收藏 0 赞 0 分享

一、特殊性规则

选择器的特殊性由选择器本身的组件确定;特殊性由四个部分组成,其初始值为0,0,0,0。

1. 对于选择器中的每一个id,加0,1,0,0;

2. 对于选择器中的每一个类、伪类、属性选择,加0,0,1,0;

3. 对于选择器中的每一个元素、伪元素,加0,0,0,1;

4. 结合符与通配符对于选择器的特殊性没有任何贡献。

注意:

1. 0,0,1,0的特殊性比0,0,0,13的特殊性更高。

2. 通配符 * 的特殊性为0,0,0,0,它是有特殊性的;结合符(比如h1+p中的“+”)根本没有特殊性;继承而来的样式也没有特殊性。

请看如下代码:

CSS Code复制内容到剪贴板
  1. <head>
  2. <style>
  3. *{
  4. color:red;
  5. }
  6. body{
  7. color:cyan;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <p>Whatkindofcolorthisparawillbe?</p>
  13. </body>

页面显示如下:

关于通配符 * :由于 * 适用于所有元素,而且有0特殊性,往往会在不经意间造成继承无法实现的情况,应该尽量避免使用 * 选择器。

3. 指定id属性的属性选择器与id选择器有本质区别,比如:

CSS Code复制内容到剪贴板
  1. <head>
  2. <style>
  3. div[id="test"]p{
  4. color:red;
  5. }
  6. #testp{
  7. color:cyan;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <divid="test">
  13. <p>Whatkindofcolorthisparawillbe?</p>
  14. </div>
  15. </body>

页面效果:

4. 行内样式的特殊性最高,为1,0,0,0。

5. 标记为!important的声明被称为重要声明,它没有特殊性,不过要与非重要声明分开考虑。

具体而言:非重要声明分为一组,它们之间的冲突使用特殊性解决;重要声明分为一组,它们之间的冲突内部解决;重要声明总是比非重要声明优先。

二、继承

1. 继承没有任何特殊性,记住这一点往往能明白很多问题。

请看如下代码:

CSS Code复制内容到剪贴板
  1. <head>
  2. <style>
  3. p{
  4. color:red;
  5. }
  6. </style>
  7. </head>
  8. <body>
  9. <p>Whatkindofcolorthis<ahref="#">link</a>willbe?</p>
  10. </body>

页面效果:

为什么设置了<p>元素的颜色为红色,<a>元素的颜色却是蓝色?

这并不是因为<a>元素不继承父元素的颜色(原谅我之前就是这么认为的),而是因为<a>元素继承了<p>元素的颜色,但是这个继承来的样式根本没有特殊性,然而浏览器默认样式中对<a>元素设置了样式,很明显浏览器默认样式的特殊性更高,于是<a>元素就按照浏览器默认样式显示。

2. 关于CSS中的继承:一般而言,只能子元素继承父元素的样式,也就是说样式在DOM中只能向下传递,不能向上;但是有一个例外,应用到body元素的背景样式可以向上传递到html元素,相应地可以定义其画布。

三、层叠

层叠规则:

1. 按权重排序。读者重要声明>作者重要声明>作者一般声明>读者一般声明>用户代理声明。

2. 权重相同的情况下,按照特殊性排序,特殊性越高的胜出。

3. 特殊性相同的情况下,按照样式表中的顺序排序,后出现的胜出。

btw,正是因为这个规则,才会使用LoVe-HA的顺序声明链接样式(LoVe-HA 依次为 :link; :visited; :hover; :active)。

更多精彩内容其他人还在看

css实现的让图片垂直居中的方法

图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项目可能会用到这个方案,所以把一些常用的方法都收集整理了一下。
收藏 0 赞 0 分享

3个比较有用的网页制作技巧

我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的 “顶级”CSS技巧!虽然没有什么新意,但对新手而言却非常重要!
收藏 0 赞 0 分享

让你写出更轻巧、更快并且更不会让你头疼的CSS的方法

为什么我们的CSS变得一团糟——我们真的很容易陷入这样的困惑中。有时这是一开始就马虎编程的结果,有时是由于后期多重的附加代码(hacks)和修改造成的。
收藏 0 赞 0 分享

利用CSS3的checked伪类实现OL的隐藏显示的方法

随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习。
收藏 0 赞 0 分享

CSS多浏览器兼容性(IE和Firefox)技巧大全推荐

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。
收藏 0 赞 0 分享

固定位置显示弹出层(兼容IE6,IE8,FF)

兼容IE6,IE8,FF弹出层固定位置显示,主要是通过css的控制
收藏 0 赞 0 分享

div完美自适应动态上下左右居中

div完美自适应动态上下左右居中,多用于信息提示框效果。
收藏 0 赞 0 分享

display:inline的用法

和 display:inline 对应的是 display:block,block 会让应用了该 CSS 属性的 HTML 标记变成块级别元素,例如 SPAN 是行内显示的,但是你加了 display:block 属性就不一样了
收藏 0 赞 0 分享

css样式实现整个页面背景使用一张图片

最近一直被css背景困扰,因为是仿站,别人网站背景图片无论怎样另存,都是相同文件名,打开一看,整个网站的各个角落背景图片都在一个文件中分布,于是上网搜集资料,发现使用这种方法的网站很多,源自于雅虎最早。
收藏 0 赞 0 分享

关于CSS样式表文件组织形式的整理

以下引用网络上的一篇文章,不知道作者是谁了,总体上概括的不错,但是在实际应用当中还是要根据项目情况来具体实施比较好。
收藏 0 赞 0 分享
查看更多