1. CSS选择器有哪些
- id选择
#idstr匹配id为“idstr”的元素
- class选择器
.classstr匹配class中含有“classstr”的元素
- 属性选择器
[attr]匹配含有该属性的元素[attr=value][attr~=value][attr|=value][attr^=value][attr$=value][attr*=value]
*匹配文档的所有元素- 伪类选择器
:按状态信息匹配元素a:visited匹配所有曾被访问过的a元素。
- 伪元素
::表示无法用 HTML 语义表达的实体p::first-line匹配所有p元素的第一行
- 后代选择器
- 子类选择器
- 兄弟选择器
更多选择器MDN
2. 权重计算
总体而言,选择器权重为:
!important > 内联样式 > id选择器 > 类、伪类、属性选择器 > 标签、伪元素选择器
对应的权重表为:
| 权重 | 选择器 |
|---|---|
| 1000 | 内联 |
| 0100 | id |
| 0010 | 类、伪类、属性 |
| 0001 | 标签、伪元素 |
权重可以累加,超过10后进位,但不影响其他权重位,可以看成(0,11,0,0)
#nav-global > ul > li > a.nav-link
上面选择器的权重计算:
- 无内联样式,首位为0
- 有1个id选择器,第二位为1
- 有1个类选择器,第三位为1
- 有3个标签选择器,第四位为3
- 结果为
(0, 1, 1, 3)
3. 比较规则
- 不同选择器的权重比较,从左往右进行比较,前一等级相等则继续往后比较
- 相同权重,后面的选择器会覆盖前面的选择器的样式
- 选择器权重均高于继承的属性
- !important样式权重最高
4. 继承属性
在css中,继承是指的是给父元素设置一些属性,后代元素会自动拥有这些属性
关于继承属性,可以分成:
-
字体系列属性- font:组合字体
- font-family:规定元素的字体系列
- font-weight:设置字体的粗细
- font-size:设置字体的尺寸
- font-style:定义字体的风格
- font-variant:偏大或偏小的字体
-
文字系列属性- text-indent:文本缩进
- text-align:文本水平
- line-height:行高
- word-spacing:增加或减少单词间的空白
- letter-spacing:增加或减少字符间的空白
- text-transform:控制文本大小写
- direction:规定文本的书写方向
- color:文本颜色
-
元素
可见性- visibility
-
表格布局属性
- caption-side:定位表格标题位置
- border-collapse:合并表格边框
- border-spacing:设置相邻单元格的边框间的距离
- empty-cells:单元格的边框的出现与消失
- table-layout:表格的宽度由什么决定
-
列表属性- list-style-type:文字前面的小点点样式
- list-style-position:小点点位置
- list-style:以上的属性可通过这属性集合
-
引用- quotes:设置嵌套引用的引号类型
-
光标属性- cursor:箭头可以变成需要的形状
继承中比较特殊的几点:
- a 标签的
字体颜色不能被继承 - h1-h6标签字体的大小不能被继承的
无继承的属性
display- 文本属性:
vertical-align、text-decoration 盒子模型的属性:宽度、高度、内外边距、边框等背景属性:背景图片、颜色、位置等定位属性:浮动、清除浮动、定位position等- 生成内容属性:content、counter-reset、counter-increment
轮廓样式属性:outline-style、outline-width、outline-color、outline- 页面样式属性:size、page-break-before、page-break-after