css - 如果 CSS 内容包含未声明的 CSS 变量,是否应该显示它?
问题描述
以下 CSS 代码将根据是否--test2
定义变量生成不同的结果:
html::before {
content: "test1:" var(--test1) " test2:" var(--test2);
}
如果定义了--test1
和--test2
,则测试内容将显示在视口中。如果--test1
已定义但未定义,--test2
则不显示任何测试内容。
这是正确的行为吗?如果是,为什么?
解决方案
从规范:
一个声明在计算值时可能是无效的,如果它包含一个
var()
引用一个自定义属性的初始值,如上所述,或者如果它使用一个有效的自定义属性,但是属性值,在替换它的 var() 函数之后,是无效的。发生这种情况时,属性的计算值要么是属性的继承值,要么是其初始值,具体取决于该属性是否被继承,就好像该属性的值已被指定为未设置关键字一样。
在您的情况下,您没有定义变量,因此它具有initial
作为值,这也将content
回退到其初始值(即none
),因此不会显示任何内容。
从相同的规范:
当自定义属性具有初始值时,var() 函数不能使用它进行替换。除非指定了有效的回退,否则尝试这样做会使声明在计算值时无效。
所以最好考虑一个后备:
html::before {
content: "test1:" var(--test1,"") " test2:" var(--test2,"");
}
推荐阅读
- c# - 如何获得“在 C# 桌面应用程序中调用 API 时使用了多少网络数据(移动或 WiFi)”
- reactjs - 错误:react-pdf 中 EOF 之后的 stream.push()
- javascript - 从 DOM 对象创建 DOM 树字符串的递归函数
- python - 如何安装 Tensorflow 我有问题
- python - 在mongodb中对嵌套数组进行排序
- microsoft-graph-api - 获取收件人在密件抄送时发送到的原始电子邮件地址
- r - 我们可以从日期中提取周数吗
- flask - Google Api 客户端 - AttributeError:“str”对象没有“授权”属性
- python - 如何使用 uproot 加载引用的值 (TRefArray)
- javascript - 我该怎么做才能使这个搜索脚本适用于我的每个表格列?