这是一个规则集,其中我有我的 mixins,.greyMixin()
并且 .disabled()
. 问题是我无法找到在一个 mixin 中编写多个属性的方法。可以看到结果 wherecolor
和background
是分开的。我希望他们在一个声明中。
.formater(@className; @rules){
.@{className}{
@rules();
}
}
.greyMixin(@property, @g, @a:1){
@rgba: rgba(@g,@g,@g,@a);
.mixin();
.mixin() when((@a) < 1) and (@a > 0){
@{property}:@rgba;
}& when ((@a) = 1){
@{property}:@rgba;
}& when ((@a) = 0){
@{property}:@rgba;
}
}
.disabled(@property, @g, @a:1){
@rgba: rgba(@g,@g,@g,@a);
@rgb:rgb(@g,@g,@g);
.mixin();
.mixin() when((@a) < 1) and (@a > 0){
&:disabled,&.disabled {
&:hover,&:focus,&:active{
@{property}:@rgba;
}
}& when ((@a) = 1){
&:disabled,&.disabled {
&:hover,&:focus,&:active{
@{property}:@rgb;
}
}
}& when ((@a) = 0){
&:disabled,&.disabled {
&:hover,&:focus,&:active{
@{property}:@rgba;
}
}
}
}
}
.formater(colourclass;{
.greyMixin(color,25,1);
.greyMixin(background,110,0.8);
.disabled(color,240,0.8);
.disabled(background, 10,0.4)});
结果是:
.colourclass {
color: #191919;
background: rgba(110, 110, 110, 0.8);
}
.colourclass:disabled:hover,
.colourclass.disabled:hover,
.colourclass:disabled:focus,
.colourclass.disabled:focus,
.colourclass:disabled:active,
.colourclass.disabled:active {
color: rgba(240, 240, 240, 0.8);
}
.colourclass:disabled:hover,
.colourclass.disabled:hover,
.colourclass:disabled:focus,
.colourclass.disabled:focus,
.colourclass:disabled:active,
.colourclass.disabled:active {
background: rgba(10, 10, 10, 0.4);
}
我正在使用 less.js 2.5.3;Windows 7的; Winless 编译器 1.9.1。