You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS使用&:hover/&:focus报Unknown property name且样式不生效如何解决

报错原因

&:hover、&:focus这类带&的嵌套选择器写法,最早是Sass/Less等CSS预处理器提供的语法,原生CSS在2023年才正式纳入规范,出现「Unknown property name」报错的核心原因是当前运行/校验环境不识别该语法:

  • 直接编写原生.css文件且未做任何编译配置时,旧版浏览器、IDE默认的CSS语法校验规则会把&开头的嵌套块判定为非法属性,直接抛出属性名未知错误,对应样式也不会被解析。
  • 即便使用支持原生CSS嵌套的高版本浏览器,若项目内的CSS语法校验规则未同步更新,依然会触发同类报错。
解决方案

方案1:全兼容平铺写法(无额外依赖,推荐)

不需要引入任何编译工具、不需要考虑浏览器兼容,直接把嵌套的伪类选择器拆成独立的标准CSS写法即可,样式效果和嵌套写法完全一致:

.pageElement a.main {
  font-size: 0.95vw;
  font-size: 18px;
  font-weight: 400;
  font-stretch: semi-condensed;
  color: #FFFFFF !important;
  background-image: linear-gradient(#46c7e7, #4689E7);
  padding: 6px 14px 8px 14px;
  border-radius: 25px;
  letter-spacing: -0.1px;
  margin: 0 0 0 4%;
  display: inline-flex;
  justify-items: center;
  align-items: center;
  white-space: nowrap;
}

.pageElement a.main:hover,
.pageElement a.main:focus {
  color: #FFFFFF !important;
  background-image: linear-gradient(#DB0000, #A80000);
}

修改后保存即可生效,不会再触发语法报错。

方案2:保留嵌套写法,配置支持环境

如果需要保留嵌套写法精简代码,可选择以下任意一种配置方式:

  • 使用CSS预处理器:将文件后缀从.css改为.scss/.less,在项目中安装对应预处理器依赖(如sass包),构建工具会自动将带&的嵌套语法编译为浏览器可识别的标准CSS,无运行兼容问题。
  • 使用原生CSS嵌套:确认目标用户使用的浏览器版本满足Chrome 112+、Safari 16.5+、Firefox 117+的要求,同时更新IDE的CSS语法校验插件版本,开启原生CSS嵌套支持后即可直接运行嵌套写法的代码。

无构建流程的纯静态HTML项目优先选择方案1,不需要额外配置,改造成本最低。

内容的提问来源于stack exchange,提问作者Rob Tari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:00:52