让前端飞web之路

【十六】CSS选择器:伪元素是怎么回事儿?

2019-03-10  本文已影响2人  alanwhy

所有前端体系的集合链接:web之路

选择器的组合

选择器列表是用逗号分隔的复杂选择器的序列;
复杂选择器则是用空格、大于号、波浪线等符号链接的复合选择器;
复合选择器则是连写的简单选择器组合;

选择器的连接方式可以理解为四则运算一样有优先级

.c,.a>.b.d {
    /*......*/
}

复合选择器表示简单选择器中“且”的关系。如:".b.d",表示选中的元素必须同时具有b和d两个class

复杂选择器是针对节点关系的选择

选择器的优先级

CSS标准用一个三元组(a,b,c)来构成一个复杂选择器的优先级

行内属性的优先级永远高于CSS规则,浏览器提供了一个“口子”,就是在选择器前加“!import”。这个用法很危险,因为它相当于一个新的优先级,而且会高于一切行内属性

同一优先级的选择器遵循“后面的覆盖前面的”原则

<div id="my" class="x y">text<div>

.x {
    background-color:lightblue;
}
.y {
    background-color:lightgreen;
}

选择器的优先级是针对单条规则的,多条规则的选择器同时命中元素,优先级不会发生叠加

<div id="my" class="x y z">text<div>

.x {
    background-color:lightblue;
}
.z {
    background-color:lightblue;
}
.y {
    background-color:lightgreen;
}

最终是浅绿色的,选择器的优先级是针对复杂选择器的优先级,选择器列表不会合并计算优先级

伪元素

伪元素不仅是一种选择规则,还是一种机制

目前兼容性良好的有:

前两者是比较类似的伪元素,其中一个表示元素的第一行,一个表示元素的第一个字母

CSS标准规定了first-line必须出现在最内层的块级元素之内

CSS标准要求前两者实现有限的几个CSS属性,都是文本相关,如图:


image.png

后两者不是把已有的内容套上一个元素,而是真正的无中生有,造出一个元素。

::before表示在元素内容之前插入一个虚拟的元素
::after表示在元素内容之后插入
并且所在的CSS规则必须指定content属性才会生效

这对于实现一些列表样式很有用

CSS选择器:伪元素是怎么回事儿?

上一篇 下一篇

猜你喜欢

热点阅读