CSS中嵌套在选择器内的span {}作用是什么,为何VS Code报错浏览器正常?
问题解释
你用到的是CSS 嵌套语法,是2023年正式纳入W3C CSS标准的新特性,作用是简化后代选择器的写法,避免重复书写父选择器。你没在过往的CSS官方文档中找到相关参考,是因为这套语法推出时间较晚,旧版文档不会收录。
你给出的嵌套写法,和下面的传统CSS写法完全等价:
h2 { letter-spacing: 2vw; font-size: 2vw; font-weight: bold; text-align: center; } h2 span { display: block; font-size: 8vw; letter-spacing: -1vw; }
报错原因
- VS Code内置的默认CSS校验规则还未适配这套新语法,默认只会把大括号内的内容识别为
属性名: 属性值的格式,所以看到span {的时候会认为你漏写了属性名后的冒号,抛出colon expected错误。 - 目前Chrome 112+、Firefox 117+、Safari 16.5+的新版本浏览器都已经原生支持CSS嵌套语法,所以你的代码在浏览器中可以正常运行。
解决方法
- 如果确定只适配新版本浏览器,要继续使用嵌套写法:可以在VS Code设置中关闭
css.validate选项,或者安装PostCSS相关的语法支持插件,即可消除报错提示。 - 如果需要兼容旧版本浏览器,或者不想修改编辑器配置:直接把嵌套的选择器展开为传统的后代选择器写法即可。
内容的提问来源于stack exchange,提问作者DenisZ
相关产品推荐
相关产品推荐

