2

我正在寻找一种更少的语法来做这样的事情:

.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%);
}

我知道如何使用参数或全局变量来做到这一点,但悬停效果并不总是旨在改变背景颜色。

4

1 回答 1

3

如果您的意思是.button-defaultand .button-warning是那些“父母”,.button-hover-effect-mixin那么您的朋友就是变量

.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,这可能不是你需要的,请参阅嵌套)。


而且...如果方向正确并且这些颜色是按钮之间的唯一区别,我会将整个片段重写为如下所示:

.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%);
        }
    }
}
于 2013-12-24T16:59:35.120 回答