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

Sass中@include调用mixin时带()与不带()的区别是什么?

Sass中@include btn()和@include btn的区别

这两种写法在功能上完全等价,输出的CSS结果一致,核心区别仅在于语法风格:

  • 当你的mixin没有必填参数(或者所有参数都提供了默认值)时,Sass允许你省略调用时的括号。
  • 带括号的写法@include btn()更明确,能清晰表明这是一个混合宏调用;不带括号的@include btn则更简洁。

结合你给出的示例代码:

//index.scss
@mixin btn($bg-color: red) {
  text-decoration: none;
  cursor: pointer;
  display: inline-block;
  border: 0;
  background: $bg-color;
}
//first type
.btn {
  @include btn();
}

//second type
.btn {
  @include btn;
}

因为btn这个mixin的参数$bg-color已经设置了默认值red,所以两种调用方式都会使用默认值生成完全相同的CSS:

.btn {
  text-decoration: none;
  cursor: pointer;
  display: inline-block;
  border: 0;
  background: red;
}

需要注意的是,如果mixin存在必填参数(即没有设置默认值的参数),那么必须使用带括号的写法并传入参数,否则会编译报错。比如:

@mixin btn($bg-color) { // 无默认值的必填参数
  background: $bg-color;
}

// 合法调用
.btn {
  @include btn(blue);
}

// 编译报错:缺少必填参数$bg-color
.btn {
  @include btn;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:04