css – 如果同一元素的多个类定义了:before伪元素,会发生什么?

前端之家收集整理的这篇文章主要介绍了css – 如果同一元素的多个类定义了:before伪元素,会发生什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > Can I have multiple :before pseudo-elements for the same element?                                    2个
我正在使用:在使用符号标记用户配置文件链接以表征用户之前,示例包括管理员”,“非活动用户”,“新手”等.

问题是,可以申请不止一个.

那么,如果链接上的多个类定义了一个:带有内容的伪元素之前会发生什么?最具体的选择器是否覆盖第一个?或者他们都按顺序出现?无论发生什么,它都是可靠的行为吗?

最佳答案
最具体的选择器优先.这在CSS2.1中提到:

Pseudo-elements behave just like real elements in CSS with the exceptions described below and 07001

就实际的浏览器行为而言,据我所知,这种行为在所有支持的浏览器上都是可靠的:在非替换元素之前和之后,如a,CSS2.1确实为这些伪元素定义了行为,不像取代像img这样的元素.这是有道理的,因为如果要生成多个这样的伪元素,浏览器就不会知道它应该如何在格式化结构中进行布局.

在下面的示例中,通过特异性和级联,a.inactive:before将优先,并且此前链接的:before伪元素将具有匹配的内容(因为两个选择器同样具体 – 具有类型选择器,类选择器和一个伪元素):

a.administrator:before {
    content: '[Administrator] ';
}

a.inactive:before {
    content: '[Inactive User] ';
}
PHP?userid=123">Username

如果一个元素可以匹配多个具有相同伪元素的选择器,并且您希望以某种方式应用所有这些选择器,则需要使用组合选择器创建其他CSS规则,以便您可以准确指定浏览器应该执行的操作案例.扩展上面的例子:

a.administrator:before {
    content: '[Administrator] ';
}

a.inactive:before {
    content: '[Inactive User] ';
}

a.administrator.inactive:before {
    content: '[Administrator] [Inactive User] ';
}
PHP?userid=123">Username

猜你在找的CSS相关文章