《css权威指南》--读书笔记(三)

第三章 结构和层叠 

ps:这一章实在是太经典了,因为你无时无刻都在用着,当然你不知道里面的原理你也能用得顺顺当当,不过学习了之后还是很有趣的

主要讲的是当一个元素有两个或者多个冲突的属性声明,该怎么办?


1.特殊性

  1. 一般地,第一个0是为内联样式声明保留的,它比其他声明的特殊性都高
  2. 对于选择器中给定的各个ID属性,加0,1,0,0   
  3. 对于选择器中给定的各个类属性值、属性选择或伪类,加0,0,1,0
  4. 对于选择器中给定的各个元素和为元素
  5. 还有一个为0特殊性的,就是通配符,需要注意,这点很有用

最高的特殊性为:

<p style="color:red;">skhdksh</p>

所以下面的用法分别按特殊性高低排

p#red{colorLred;} //2
p.red{color:red;} //3
p[class="red"]{color:red;} //3
p:hover{color:red}  //3
h1 p{color:red;}  //4
p:first-child{color:red;} //4

2.重要性

用法:称为重要声明,在结束分号之前插入 !important来标志,放在其他位置都将无效

p.red{color:red  !important;}
 有重要声明的分一组,非重要声明的分一组,再在组内用特殊性解决冲突,要记住,重要声明总是要胜出于分重要声明,就算有内联(inline)样式表也一样


3.继承

一般只能向下继承,即沿着树向下传播到后代元素。但有一个例外是,应用到body元素的背景样式可以传递到html元素

body元素时浏览器默认显示的所有元素的祖先,而html元素则是整个文档的祖先(html为根元素)

一般地,大多数框模型属性(包括外边距、内边距、背景、边框)都不能继承,会使文档变得更混乱


试试下面的代码,可发现<em>Center</em>那里为灰色gray,为什么呢?

因为通配符适用于所有元素,有0特殊性,要优先于继承的黑色black,因为继承值根本没有特殊性

<html>
<head>
<style type="text/css">
*{color:gray;}
h1#page-title{color:black;}
</style>
</head>
<body>
<h1 id="page-title">Meerkat <em>Central</em></h1>
<p>
Welc<font>ome to book</font>fish
</p>
</body>
</html>

4.层叠

冲突时应该怎么做呢?

  1. 找出所有相关的规则
  2. 按重要声明和非重要声明分组;按来源对所有声明排序。在下一节分详细说明来源排序
  3. 按特殊性排序
  4. 按出现顺序排序。声明在文档越后出现,权重越大。因此导入样式表的声明在前,权重较小

5.按权重和来源排序
在声明权重中分5级
  1. 读者的重要声明
  2. 创作人员的重要声明
  3. 创作人员的正常声明(非重要声明)
  4. 读者的正常声明
  5. 用户代理声明

6.说说链接的LVHA由来(LoVe-HA,比较好记)

当然,你也可以选择其他变种,看情况来选择,LoVe-HA只是比较普遍的一种,主要是以未访问和已访问来分

首先这些选择器的特殊性都是一样的:0,0,1,0,属于伪类,所以按在文档中出现的顺序来排序权重

正在“点击”的未访问链接可以和其中3个规则匹配---::link、:hover、:active

如果按这样排序 :active、:hover、:link、:visited,那么排在后面的:link、:active会胜出,将覆盖悬浮:hover、:active规则,当然这是在规则都在设置同一个属性出现冲突的情况下发生,在下面的规则才是会发生覆盖,顺序才有那么重要,那么不同的属性,如color,font-size,background-color等等不同属性顺序就没关系了

:link{color::red;}
:visited{color::red;}
:hover{color::red;}
:active{color::red;}


好了,就先这样吧,也不知有没有错,但总结之后发现理解了更多,前端之路继续咯

s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值