CSS-选择器

106 阅读3分钟

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内联
0100id
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