CSS选择器、优先级和继承

147 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

CSS选择器

选择器示例学习 CSS 的教程
类型选择器h1 { }类型选择器
通配选择器* { }通配选择器
类选择器.box { }类选择器
ID 选择器#unique { }ID 选择器
标签属性选择器a[title] { }标签属性选择器
伪类选择器p:first-child { }伪类
伪元素选择器p::first-line { }伪元素
后代选择器article p后代运算符
子代选择器article > p子代选择器
相邻兄弟选择器h1 + p相邻兄弟
通用兄弟选择器h1 ~ p通用兄弟

优先级

常用选择器权重优先级:* !important > id > class > tag*

权重

决定css规则怎样被浏览器解析直到生效。

从0开始,一个行内样式+1000,一个id选择器+100,一个属性选择器、class或者伪类+10,一个元素选择器,或者伪元素+1,通配符+0。

选择器权重
!important无限大
行内样式1000
ID选择器100
Class选择器、伪类和属性选择器10
标签选择器和伪元素选择器1
通配符0

行内、内联和外联样式优先级: 内联样式和外联样式的优先级和加载顺序有关.。 !important > 行内样式 > 内联样式 and 外联样式

样式继承

控制继承

CSS 为控制继承提供了五个特殊的通用属性值。每个 CSS 属性都接收这些值。

  • inherit

    设置该属性会使子元素属性和父元素相同。实际上,就是“开启继承”。

  • initial

    将应用于选定元素的属性值设置为该属性的初始值

  • revert (en-US)

    将应用于选定元素的属性值重置为浏览器的默认样式,而不是应用于该属性的默认值。在许多情况下,此值的作用类似于 unset

  • revert-layer (en-US)

    将应用于选定元素的属性值重置为在上一个层叠层中建立的值。

  • unset

    将属性重置为自然值,也就是如果属性是自然继承那么就是 inherit,否则和 initial 一样

默认继承的 ("Inherited: Yes") 的属性:

  • 所有元素默认继承:visibility、cursor
  • 文本属性默认继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text-indent、text-align、text-shadow、text-transform、direction
  • 列表元素默认继承:list-style、list-style-type、list-style-position、list-style-image
  • 表格元素默认继承:border-collapse

默认不继承的("Inherited: No") 的属性:

  • 所有元素默认不继承:all、display、overflow、contain
  • 文本属性默认不继承:vertical-align、text-decoration、text-overflow
  • 盒子属性默认不继承:width、height、padding、margin、border、min-width、min-height、max-width、max-height
  • 背景属性默认不继承:background、background-color、background-image、background-repeat、background-position、background-attachment
  • 定位属性默认不继承:float、clear、position、top、right、bottom、left、z-index
  • 内容属性默认不继承:content、counter-reset、counter-increment
  • 轮廓属性默认不继承:outline-style、outline-width、outline-color、outline
  • 页面属性默认不继承:size、page-break-before、page-break-after
  • 声音属性默认不继承:pause-before、pause-after、pause、cue-before、cue-after、cue、play-during

总结

使用css使html更加美观。我们要知道如果书写css,选择器、权重和继承。明白了这些,写一些基本样式是没有问题的。当然还有后续的盒模型和布局样式。

参考链接

  1. MDN CSS
  2. 你必须懂的css样式权重和优先级
  3. 谈谈 CSS 关键字 initial、inherit 、unset 和 revert