CSS特性与优先级

层叠性,继承性,优先级

浏览器窗口中样式表,出现横划线,代表出现层叠问题

层叠性:

·同一类选择器(✔),优先级相同时,后定义的覆盖之前定义的

继承性:

子元素没有设置样式,父元素设置了样式,子元素继承父元素的属性。
不光是儿子可以继承,后代都可以继承!
一系列font属性,color,text-align,!!line-htight!!(极容易忽略)
切记!!如果line-height带了单位,line-height继承来的是父亲计算出来的结果px值,如果父亲line-height为2,那继承给儿子是从父亲计算得到的结果,而不是继承过来之后再在儿子这儿算结果。行高出问题了看下是否是这个问题。line-height最好不要带单位,就儿子算儿子的了。
边距、位置、宽高、背景色不默认继承

a标签比较特殊,自带一个固定的颜色,所以不会从父元素默认继承。

···
由于line-height可以被继承,所以div设置height后同时设置相等的line-height,即可完成内容垂直居中表现。
实际上相当于div内部的子元素继承了div的line-height,如果为了清晰还是直接设置子元素更好。
···
所有text-\font-\line-属性都默认可继承

优先级:

继承<<标签选择器<<类选择器<<id选择器<<行内样式设置<<!important
继承权重为0,基本可以忽略,继承即使加上!important 还是不如其他选择器
每一类对应一定数值的权重,权重可以叠加

更加细分:
ID选择器>类选择器=伪类选择器>属性选择器> (子选择器=后代选择=相邻选择器)

标签选择器=伪元素选择器>通配符选择器

· 一般后代选择器、相邻选择器不应该与标签选择器比较!

注意:

######header a {}

这两个选择器的权重一样!权重一样! 写在后面的会层叠掉前面的!!所以并不一定是后代大于标签

属性选择器可以这样用
[class=”linear-gradient”],不是必须在前面加上标签div[class=ori]
input[type=text]是交集选择器,标签*属性

读取选择器的原则是从右到左。因此,我们书写的右边的最后一个选择器,被称作关键选择器,对于效率有决定性影响。

效率由高到低

1.ID选择器
2.类选择器
3.标签选择器
4.相邻选择器
5.子选择器
6.后代选择器
7.通配符选择器
8.属性选择器
9.伪类选择器

选择器优先级与效率PK:
https://segmentfault.com/a/1190000003064142

Author: superman285
Link: https://skr.dog/2018/08/30/CSS特性与优先级/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.