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

SCSS中父元素Hover时子元素样式的BEM规范实现问询

解决方法:符合BEM规范的SCSS写法

没问题!要实现你想要的「在sidebar__logo的规则块内关联父元素sidebar的hover状态」,同时严格遵循BEM规范,你可以借助SCSS的@at-root指令和父选择器引用&来实现。具体代码如下:

.sidebar {
  width: 100px;

  &__logo {
    width: 40px;

    // 父元素hover时修改当前logo的宽度
    @at-root .sidebar:hover & {
      width: 80px;
    }
  }

  &:hover {
    width: 200px;
  }
}

写法解释:

  • @at-root的作用是跳出当前嵌套层级,让后面的选择器编译时不会带上sidebar__logo的前缀,避免生成错误的嵌套选择器。
  • &在这里指代当前的sidebar__logo选择器,所以.sidebar:hover &最终会编译成.sidebar:hover .sidebar__logo,和你原来的功能完全一致,但结构更符合BEM的模块化要求。
  • 这种写法把sidebar__logo的所有样式(包括父元素触发的状态)都集中在它自己的规则块内,更便于维护,完全契合BEM组件化的设计思想。

内容的提问来源于stack exchange,提问作者Amir Shahbabaie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:02:51