深入CSS
1. CSS 选择器的特异度
CSS选择器的特异度:选择器特殊的程度。特异度值越高,优先级越高。
选择器按照特异度从高到底分为:
!important(∞) > style=""行内样式(1000) > #id选择器(100) > .类(伪类、属性)选择器(10) > 标签选择器(1) > *通配符选择器(0)
组合选择器时,选择器的特异度就多个选择器的相加,例如div .app的特异度就是1+10=11。
**注:特异度比较是从高位比到低位,不会产生进位。**有11个标签选择器和一个类选择器的组合,他的特异度是10+11=1-11而不是21。
如果一个元素设置了多个特异度相同的样式,根据就近原则,会优先使用离元素最近的样式(一般是最后一个样式)
2. CSS 继承
某些属性会自动继承其父元素的计算值,除非显式指定一个值。一般和文字相关的属性都可以继承(例如:color),与盒模型相关的一些属性都是不可继承的(例如:width)。
出现样式继承时,继承下来的特异度为0,如果该元素没有直接选中,不管父元素特异度多高,子元素得到的特异度都是0。
显式继承
设置属性值为inherit关键字使得元素获取其父元素的计算值,实现继承。它可以应用于任何 CSS 属性,包括 CSS 简写。
*{
box-sizing: inherit;
}
3. CSS 求值过程解析
初始值
- CSS中,每个属性都有一个初始值
- background-color的初始值为transparent
- margin-left的初始值为0
- 可以使用initial关键字显式重置为初始值
- background-color:initial
4. CSS 布局方式及相关技术
布局(Layout))是什么?
- 确定内容的大小和位置的算法
- 依据元素、容器、兄弟节点和内容等信息来计算
布局相关技术
- 常规流
- 行级
- 块级
- 表格布局
- FlexBox
- Grid布局
- 浮动
- 绝对定位