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

如何使用&操作符实现父元素向子元素传递CSS属性?

当然可以实现!这里有几种方法帮你在LESS中把父元素的CSS属性传递给子元素

首先得说明一下:你当前写的LESS代码其实不会自动把.button的height和width传递给.button-blue、.button-red——因为LESS的嵌套只是帮你生成子选择器,但不会默认继承父选择器的属性。不过我们可以用LESS的特性来达成你想要的效果。

方法1:使用混合(Mixins)

这是最直接的方式,把需要复用的属性封装成一个混合,然后在需要的地方引入。这样编译后每个子选择器都会包含这些属性,完全符合你期望的输出:

// 定义一个可复用的混合,括号表示不会编译成独立的CSS选择器
.button-base() {
  height: 20px;
  width: 20px;
}

.button {
  .button-base(); // 父元素应用基础样式
  &-blue {
    .button-base(); // 子元素继承基础样式
    background-color: blue;
  }
  &-red {
    .button-base(); // 子元素继承基础样式
    background-color: red;
  }
}

编译后的CSS就是你想要的结果:

.button {
  height: 20px;
  width: 20px;
}
.button-blue {
  height: 20px;
  width: 20px;
  background-color: blue;
}
.button-red {
  height: 20px;
  width: 20px;
  background-color: red;
}

方法2:使用扩展(Extend)

如果你希望CSS代码更简洁(复用选择器分组),可以用Extend特性,它会让子选择器和父选择器共享同一组属性:

.button {
  height: 20px;
  width: 20px;
}

.button {
  &-blue:extend(.button) {
    background-color: blue;
  }
  &-red:extend(.button) {
    background-color: red;
  }
}

编译后的CSS会是这样的:

.button, .button-blue, .button-red {
  height: 20px;
  width: 20px;
}
.button-blue {
  background-color: blue;
}
.button-red {
  background-color: red;
}

这种方式的好处是减少了重复代码,不过输出的结构和你最初期望的略有不同,但功能是完全一样的。

为什么你原来的写法不行?

再补充一下:你原来的嵌套写法&-blue只是生成.button-blue这个选择器,但.button的属性只会作用于.button本身,LESS不会自动把父选择器的属性“拷贝”到嵌套的子选择器里——这就是为什么需要用混合或扩展来主动传递属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:48:10