我正在寻找一种较少的语法来做类似的事情:
.button-default{
background-color: rgb(100,200,250);
:hover{
.button-hover-effect-mixin();
}
}
.button-warning{
background-color: rgb(250,100,0);
:hover{
.button-hover-effect-mixin();
}
}
.button-hover-effect-mixin(){
background-color: darken(PARENT.background-color, 50%);
}
我知道如何使用参数或全局变量,但悬停效果并不总是设计为更改背景颜色。
答案 0 :(得分:3)
如果您的意思是.button-default
和.button-warning
是.button-hover-effect-mixin
的“父母”,那么您的朋友就是variables:
.button-default {
@background-color: rgb(100, 200, 250);
background-color: @background-color;
&:hover {
.button-hover-effect-mixin();
}
}
.button-warning {
@background-color: rgb(250, 100, 0);
background-color: @background-color;
&:hover {
.button-hover-effect-mixin();
}
}
.button-hover-effect-mixin() {
background-color: darken(@background-color, 50%);
}
您还可以将此变量设为.button-hover-effect-mixin
的参数。另外,请不要错过&
选择器附近的:hover
(不&
它会扩展为.button-default :hover
,这可能不是您所需要的,请参阅Nesting)。
并且......如果这是正确的方向并且那些颜色是按钮之间的唯一区别,我会将整个片段重写为这样的:
.button(default, rgb(100, 200, 250));
.button(warning, rgb(250, 100, 0));
.button(@name, @color) {
.button-@{name} {
background-color: @color;
&:hover {
background-color: darken(@color, 50%);
}
}
}