其实,我清楚的知道什么是对的什么是错的,什么该做什么不该做,然而懒惰的天性驱使我们每每做出错误的决定,结束后我又再一次重复着厌倦和懊恼。
目录
CSS的三大特性总览:
层叠性:
继承性:
优先级:
如何计算权重:
CSS的三大特性总览:
- 层叠性;
- 继承性;
- 优先级;
下面逐一介绍:
层叠性:
一句话来概括:我们可以将其理解为覆盖,前面的被后面的所覆盖,继承的被自己有的所覆盖;
概念:对于同一个标签,不同选择器给设置相同的样式,此时一个样式就会覆盖(层叠) 另一个冲突的样式。层叠性主要解决样式冲突的问题;
覆盖(层叠)原则:
- 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式;
- 样式不冲突,不会覆盖;
继承性:
一句话来概括:自己没有,所以继承父系的(仅仅继承对文字的样式化设计);
概念:子标签会继承父标签的某些样式,如文本颜色和字号。
继承原则:
- 自己没有才会继承父亲的,自己有则不继承;
- 恰当的使用继承可以简化代码,降低CSS样式的复杂性
- 子元素只可以继承父元素对文字样式的设计(text-,font-,line-这些元素开头的可以继承,以及color属性)
优先级:
什么时候,会出现优先级问题?答:当同一个标签使用了多个选择器设置样式的时候,就会出现到底谁才起作用的问题,此时就涉及到优先级;
一句话概括:优先级高的会覆盖优先级低的选择器;优先级相同时,后执行的会覆盖先执行的;
优先级顺序:(从低到高)
继承—>通配符选择器—> 标签选择器—> 类选择器—> ID选择器 —>行内 —>!important;
如何计算权重:
先给定四个位置,(0,0,0,0);
标签内选择符的个数对应第一个位置,ID选择符的个数对应第二个位置,class选择符/属性选择符/伪类选择符 的个数对应第三个位置,元素标签和伪元素选择符的个数对应第四个位置;
看个案例:
<style>/*格式:行内style个数 id选择器个数,类选择器个数,标签选择器个数 *//*(0,2,0,0)*/#father #son{color:red;}/*(0,1,1,1)*/#father p .c2{color: aquamarine;}/*(0,1,0,0)*/#father{color: blue;}</style>
</head>
<body><div id="father" class="c1"><p id="son" class="c2">猜猜文字什么颜色?</p></div>
</body>
看上述代码:经比较:red色标签权重最大,所以优先级最高,所以字体为红色;
比较规则:
- 自左往右,先比较第一级数字,如果比较出来了,之后的统统不看;
- 如果第一级数字相同,就去比较第二级数字,如果比较出来,就不往后看,否则比较下一级;
- 如果最终所有数字相同,表示优先级相同,此时就要看层叠性;
优先级注意点:
- 权重是有4组数字组成,但是不会有进位。
- 等级判断从左向右,如果某一位数值相同,则判断下一位数值。
- !important 无穷大,但是除非需要,不然不建议使用;
- !important不能提升继承优先级;
如果感觉写的不错,欢迎收藏本专栏,后期会持续更新相关知识点;