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

SCSS代码中&-link写法的&-符号具体代表什么含义

SCSS中&-写法的实际作用

这是SCSS嵌套语法里最常用的父选择器复用逻辑,编译时的规则非常直白,没有特殊机制:

  • &是SCSS专属的父选择器占位符,编译阶段会直接把当前位置的&替换成代码块所属的全部上层选择器拼接文本
  • 你示例里的&-link写法,就是把&替换为外层的.btn,通过短横线直接拼接成完整的选择器.btn-link,最终生成的是和.btn平级的独立类选择器,不是嵌套的后代选择器

你给出的示例代码,最终会编译为如下原生CSS(SCSS变量按通用取值展示):

.btn {
  border: 0;
  font-size: 14px;
  font-weight: bold;
}
.btn-link {
  background-color: #ffffff;
  color: #ff7a00;
}

这个写法的实用价值

  • 统一维护组件前缀:比如按钮组件的所有变体(主按钮、危险按钮、大尺寸按钮、禁用状态)都可以在同一个.btn嵌套块里用&-xxx的写法定义,哪天要把组件类名从.btn改成.action-btn,只需要修改最外层的选择器,所有变体类名会自动跟着变化,不用全局逐行替换
  • 减少重复书写:不用每次写变体类的时候都重复敲一遍.btn前缀,写嵌套的时候就能把同组件的所有样式聚合到同一个代码块里,找代码的时候不用分散在文件不同位置

新手容易踩的坑

  • 别漏了拼接的连接符:如果写的时候少了短横线,把&-link写成&link,编译后会变成连在一起的.btnlink,不是预期的.btn-link选择器
  • 别和纯嵌套的规则搞混:如果在.btn块里直接写span {},编译后会生成后代选择器.btn span {};但只要用到&做拼接,就是纯文本替换的逻辑,不会自动生成嵌套的层级关系
  • 别拼接出无效选择器:比如在.card块里写&-title是合理的.card-title,但如果拼接的时候和伪类写混了,比如&:link要注意位置,不然可能生成不符合预期的选择器

内容的提问来源于stack exchange,提问作者Vanmeeganathan P K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 13:54:04