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

SASS自定义占位符在:focus伪类与.focus类上不生效求助

问题分析与解决方案

核心问题

你的代码有两个关键问题导致样式不生效:

  • 嵌套在%button-styling内部的%btn-focus占位符作用域受限,且%button-styling本身未被任何实际选择器扩展,导致内部的@extend规则和占位符样式根本不会被编译输出。
  • 伪类写法错误:聚焦伪类的标准写法是:focus,而非::focus(::用于伪元素,比如::before)。

修正后的代码示例

// 把聚焦样式占位符放在全局作用域
%btn-focus { 
  color: $white;
}

%button-styling {
  color: $grey;
  
  &:focus,
  &.focus {
    @extend %btn-focus;
  }
}

// 必须有实际选择器扩展这个占位符,样式才会被编译
.button {
  @extend %button-styling;
}

补充说明

  • SASS的占位符(%)只有在被实际选择器@extend时才会生成对应的CSS代码,所以一定要确保最终有具体的选择器(比如.button)去扩展%button-styling。
  • 如果不想把%btn-focus放在全局,也可以把它定义在%button-styling同级,避免作用域问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:55:32