选择器

  • 选择器的种类

  • 选择器的优先级与计算


CSS 选择器规定了 CSS 规则会被应用到哪些元素上。

  • id选择器(#box),选择id为box的元素

  • 类选择器(.one),选择类名为one的所有元素

  • 标签选择器(div),选择标签为div的所有元素

  • 后代选择器(#box div),选择id为box元素内部所有的div元素

  • 子选择器(.one>one_1),选择父元素为.one的所有.one_1的元素

  • 相邻同胞选择器(.one+.two),选择紧接在.one之后的所有.two元素

  • 群组选择器(div,p),选择div、p的所有元素

还有一些使用频率相对没那么多的选择器:

  • 伪类选择器

:link :选择未被访问的链接
:visited:选取已被访问的链接
:active:选择活动链接
:hover :鼠标指针浮动在上面的元素
:focus :选择具有焦点的
:first-child:父元素的首个子元素
:nth-child(i): 在这里只有满足以下两个条件才会执行:1.元素的类名是 :前的类名。2.元素是其父元素的第i个子元素。
  • 伪元素选择器(:是css2语法,::是css3语法,用于与伪类区分)

  • 属性选择器


伪元素选择器示例:

  • 使用 ::before 插入内容:

上述示例将在所有 <p> 元素的内容前插入 >>

  • 使用 ::first-line 修改首行样式:

上述示例将使所有 <p> 元素的首行文本加粗并设置为蓝色。

  • 使用 ::first-letter 修改首字母样式:

上述示例将使所有 <p> 元素的首字母字体大小为 2 倍,并设置为红色。

  • 使用 :nth-child(2) 修改父元素的第二个子元素:

直接子元素 >

> 是子选择器(child selector)的一种。它用于选择指定元素的直接子元素。

在上述示例中,只有第一个 <p> 元素会被选择,因为它是直接作为具有 .rtl 类的 <div> 元素的子元素。

所以,> 选择器用于选择特定元素的直接子元素,而不会匹配更深层次的子元素。


选择器与优先级

根据优先级排序

内联样式 > id 选择器 > 类、伪类选择器、属性选择器 > 元素、伪元素选择器 > 后代、子代、兄弟选择器

当多种样式要同时作用于同一元素时,最终的显示效果就要由优先级来决定,用 A、B、C、D 四个默认值都是0的值来依次代表 内联样式、id选择器、类选择器伪类选择器属性选择器、元素选择器伪元素选择器。

  • 如果存在内联样式, 则 A ++,

  • 如果存在id选择器,则 B++

  • 每出现一个类选择器、伪类选择器或者属性选择器,C++执行一次

  • 每出现一个元素选择器或者伪元素选择器,D++执行一次

由上面的方法,每组样式都会算出一组结果为 (A,B,C,D) 的值,将各组结果依次对比:

  • 先比较A,如果双方A值不相等,就取较大者的样式;如果双方A值相等,就比较B,若2B不等则取较大者的样式,若等则比较C ...

  • 如果ABCD四个值都比较完了,且四个值都对应相等,则会发生样式覆盖,表现效果为后者样式会覆盖前者,最终浏览器显示的效果为最后定义的一个样式。

  • 如果外部样式需要覆盖内联样式,就需要使用!important

Last updated