scss(sass)中 & 的使用说明

在 SCSS(Sass)中,& 符号是一个父选择器引用,它代表当前嵌套规则的外层选择器。主要用途如下:


1. 连接伪类/伪元素

scss

复制

下载

复制代码
.button {
  background: blue;
  &:hover {  // 相当于 .button:hover
    background: darkblue;
  }
  &::after { // 相当于 .button::after
    content: ">";
  }
}

编译结果:

css

复制

下载

复制代码
.button {
  background: blue;
}
.button:hover {
  background: darkblue;
}
.button::after {
  content: ">";
}

2. 串联选择器(BEM 风格命名)

scss

复制

下载

复制代码
.menu {
  &__item {   // 相当于 .menu__item
    color: red;
  }
  &--dark {   // 相当于 .menu--dark
    background: black;
  }
}

编译结果:

css

复制

下载

复制代码
.menu__item {
  color: red;
}
.menu--dark {
  background: black;
}

3. 嵌套上下文

scss

复制

下载

复制代码
.page {
  .dark-theme & { // 相当于 .dark-theme .page
    background: #333;
  }
}

编译结果:

css

复制

下载

复制代码
.dark-theme .page {
  background: #333;
}

4. 避免重复书写父选择器

scss

复制

下载

复制代码
.card {
  &-header { ... }  // .card-header
  &-body { ... }    // .card-body
  &-footer { ... }  // .card-footer
}

⚠️ 注意事项

  • & 必须写在选择器开头&hover(错误)❌ → &:hover(正确)✅

  • 深层嵌套时& 会引用完整的选择器链:

    scss

    复制

    下载

    复制代码
    .a {
      .b & { // 编译为 .b .a
      }
    }

总结

场景 示例 编译结果
伪类 &:hover .parent:hover
BEM 命名 &__item .parent__item
修改上下文 .context & .context .parent
简化重复前缀 &-suffix .parent-suffix

合理使用 & 能让 SCSS 代码更简洁、可读性更强,特别适合组件化开发和 BEM 命名规范!

相关推荐
Python私教19 小时前
如意Agent日志系统重构:从 print() 大海捞针到结构化可观测性栈
java·前端·重构
We་ct20 小时前
LeetCode 97. 交错字符串:动态规划详解
前端·算法·leetcode·typescript·动态规划
Chengbei1120 小时前
轻量化 Web 安全日志分析神器 星川智盾日志威胁检测、地理溯源、MITRE ATT&CK 映射,支持 Windows/macOS/Linux
前端·人工智能·安全·web安全·macos·系统安全·安全架构
风流 少年20 小时前
Python Web框架:FastAPI
前端·python·fastapi
GISer_Jing20 小时前
AI时代面试新常态——从“会用工具”到“深挖原理”的跨越
前端·人工智能·ai编程
IT_陈寒20 小时前
React的useEffect把我坑惨了,这些闭包陷阱真要命
前端·人工智能·后端
前端之虎陈随易20 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·typescript·npm·node.js
ayqy贾杰20 小时前
Cursor SDK发布!开发者可直接搬走其内核
前端·vue.js·面试
椰猫子21 小时前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库