目录
一、css三大特性
CSS 有三个非常重要的三个特性:层叠性、继承性、优先级。
1.层叠性
相同选择器给设置相同的样式,此时一个样式就会
覆盖(层叠)
另一个冲突的样式。层叠性主要解决样式冲突的问题
层叠性原则:
样式冲突,遵循的原则是
就近原则
,哪个样式离结构近,就执行哪个样式
样式不冲突,不会层叠
CSS 层叠性口诀:
长江后浪推前浪,前浪死在沙滩上
2. 继承性
CSS中的继承: 子标签会继承父标签的某些样式,如文本颜色和字号。
简单的理解就是:子承父业。
恰当地使用继承可以简化代码,降低 CSS 样式的复杂性
子元素可以继承父元素的样式(
text-,font-,line-这些元素开头的可以继承,以及color属性
)
继承性口诀:
龙生龙,凤生凤,老鼠生的孩子会打洞
行高的继承性
body {
font:12px/1.5 Microsoft YaHei;
}
font:12px/24px Microsoft YaHei;大小/行高
font:12px/1.5 Microsoft YaHei;1.5是当前元素文字大小 font-size的1.5倍
行高=12*1.5
行高可以跟单位也可以不跟单位(px)
如果子元素没有设置行高,则会继承父元素的行高为 1.5
此时子元素的行高是:当前子元素的文字大小 * 1.5
body 行高 1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高
3. 优先级
当同一个元素指定多个选择器,就会有优先级的产生。
选择器相同,则执行层叠性
选择器不同,则根据
选择器权重
执行
优先级注意点:
1. 权重是有4组数字组成,但是不会有进位。
2. 可以理解为类选择器永远大于元素选择器, id选择器永远大于类选择器,以此类推..
3. 等级判断从左向右,如果某一位数值相同,则判断下一位数值。
4. 可以简单记忆法: 通配符和继承权重为0, 标签选择器为1,类(伪类)选择器为 10, id选择器 100, 行内样式表为
1000, !important 无穷大.
5. 继承的权重是0, 如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是 0。
以后看标签到底执行那个样式,就先看这个标签有没有直接被选出来
a链接必须直接指定样式,不继承
权重叠加:
如果是复合选择器,则会有权重叠加,需要计算权重。
div ul li ------> 0,0,0,3
.nav ul li ------> 0,0,1,2
a:hover -----—> 0,0,1,1 =1+10
.nav a ------> 0,0,1,1 =10+1
li-----0,0,0,1
ul li---0,0,0,2
.nav li-----0,0,1,1
有叠加,不进位
二、权重的练习题
1.类选择器.nav的权重是10,li继承过来时,会继承到.nav的样式,但是继承时的权重会变成0,因此当li重新设置时,li本身权重为1,1>0,也就是会显示最后li设置的颜色,所以最后的结果显示为粉色
要记住,虽然权重有高低,但是继承过来的权重是0,继承的只是样式不是权重
2.需求是把第一个li的颜色换成粉色
那么设置如此为什么没有变化呢?
答案还是权重的问题
类选择器.nav的权重是10,li选择器是1,所以.nav li的权重是11
而.pink类选择权重是10,11>10,所以是.nav li的设置起作用
那么如何解决这个问题呢?
把权重改高,权重越高,优先级越高。
.nav .pink的权重是20,这样就可以执行其设置的粉色了
注意,增加的权重不应该是父系的权重,因为继承过来权重是0