我想知道是否有更好的解决方案(或者我的解决方案是否正确),创建if变量和守卫的行为。
目标:
.responsive (@responsive);
被调用的任何地方合并)我的代码:
@responsive: true;
.responsive(true){
a {
color: red;
}
}
.responsive(true) {
b {
color: blue;
}
}
.responsive (@responsive);
答案 0 :(得分:5)
我不完全确定我明白你所说的不起作用。
但是,如果我这样做......有两件事与此相关,你必须记住在LESS中:
说 - 如果你真的想在多个地方使用相同的守卫做不同的事情,你需要定义多个mixin(每个地方会得到另一个mixin),如果你想在那个地方渲染它定义它,你只需要在定义之后(或之前)立即调用它。像这样:
@responsive: true;
test1 {
color:green;
}
.a() when (@responsive){
a {
color: red;
}
}
.a;
test2 {
color:green;
}
.b() when (@responsive) {
b {
color: blue;
}
}
.b;
输出将是:
test1 {
color: green;
}
a {
color: red;
}
test2 {
color: green;
}
b {
color: blue;
}
如果.a()
设置为.b()
,则返回mixins @responsive
和true
,如果不是,则返回:
test1 {
color: green;
}
test2 {
color: green;
}
我希望这有点像你想要的。
答案 1 :(得分:3)
我最终使用了这个:
@responsive: true;
section.content {
.responsive () when (@responsive) {
@media (min-width: 768px) {
float: right;
width: 80%;
}
@media (min-width: 980px) {
width: 60%;
}
}
.responsive;
}
aside.left {
.responsive () when (@responsive) {
@media (min-width: 768px) {
float: left;
width: 20%;
}
}
.responsive;
}