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

如何在SCSS混合宏中检测父选择器&的指向?

在SCSS混合宏中检测父选择器&是否指向body

首先纠正你代码里的小问题:调用混合宏要用@include,不是@import(后者是用来导入SCSS文件的),修正后的调用代码应该是:

body {
  @include x;
}

button {
  @include x;
}

回到你的需求,完全可以在混合宏里检测父选择器&的指向,核心是利用SCSS的@if条件判断,直接将&和目标选择器做比较:

单一父选择器的精准匹配

如果只需要精准匹配body作为父选择器,混合宏可以这么写:

@mixin x() {
  // 判断当前父选择器是否为body
  @if & == body {
    // 这里写针对body的特殊逻辑
    background: #f5f5f5;
    line-height: 1.5;
  } @else {
    // 其他选择器调用时的通用逻辑
    padding: 0.5rem 1rem;
    border-radius: 4px;
  }
}

复杂父选择器的包含检测

如果你的父选择器是嵌套结构(比如.page-container body),想要检测父选择器中是否包含body,可以用index()函数判断:

@mixin x() {
  // 判断父选择器中是否包含body
  @if index(&, body) {
    // 包含body时的处理
    color: #333;
  } @else {
    // 非body相关选择器的处理
    border: 1px solid #ddd;
  }
}

这样就能根据调用混合宏的父选择器类型,执行不同的逻辑了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:10:12