:root 和 * 有什么区别?

问题描述 投票:0回答:3

当我们在CSS中声明变量时,为什么要这样写:

:root
{
    --bgcolor:orange;
}

/* instead of */

*
{
    --bgcolor:orange;
}

这两者有什么区别?

html css css-selectors
3个回答
1
投票

:root
是一个伪选择器,在99%的情况下相当于
html
,但具有更高的特异性(特异性等于html+class)

:root
根据文档的 format 选择文档的根元素。它的存在是因为 CSS 可以用于其他文档格式(SVG、XML)

*
会将 CSS 应用于页面上的每个元素。这通常保留用于标准化、字体等。


0
投票

这是因为

:root
只是 <html> 元素的
伪选择器
。设置 CSS 自定义属性/变量时,它们是在根元素上设置的 - 将其视为全局变量。

如果您使用

*
通用选择器) - 它会在DOM中的每个元素(例如,
div
p
span
等)上设置自定义属性/var。

使用

:root
只是允许所有子元素访问该属性/var,而无需为 DOM 的所有元素进行不必要的计算开销。


0
投票

*
:root

之间的区别

*
是通用选择器

:root
是一个伪选择器

*
其特异性会更高。

:root
它的特异性会降低。

© www.soinside.com 2019 - 2024. All rights reserved.