【问题标题】:How can I have a mixin with multiple selectors?我怎样才能有一个带有多个选择器的 mixin?
【发布时间】:2015-06-16 20:48:13
【问题描述】:

以下代码:

.positionBase (@name,@size: 16px,@position: 0) {
    [disabled] .icon.@{name}, .disabled .icon.@{name}, .disabled.icon.@{name} {
        background-position: @position*@size -@size;
    }

    .icon.@{name} {
        background-position: @position*@size 0;
    }

    .icon.@{name}.dark {
        background-position: @position*@size -2*@size;
    }

    .icon.@{name}.dark:hover, a:hover .icon.@{name}.dark, button:hover .icon.@{name}.dark, .button:hover .icon.@{name}.dark, .interactable:hover .icon.@{name}.dark {
        background-position: @position*@size -3*@size;
    }
}

* {
    .positionBase(testing,16px,0)
}

按我的预期生产:

* [disabled] .icon.testing,
* .disabled .icon.testing,
* .disabled.icon.testing {
  background-position: 0px -16px;
}
* .icon.testing {
  background-position: 0px 0;
}
* .icon.testing.dark {
  background-position: 0px -32px;
}
* .icon.testing.dark:hover,
* a:hover .icon.testing.dark,
* button:hover .icon.testing.dark,
* .button:hover .icon.testing.dark,
* .interactable:hover .icon.testing.dark {
  background-position: 0px -48px;
}

如何去掉 * 前缀,只使用不带前缀的选择器?

不起作用的事情:

.positionBase(testing,16px,0)

* {
    .positionBase(testing,16px,0)
}

{
    .positionBase(testing,16px,0)
}

我的 Google foo 很弱,我没有发现任何东西让我认为这是可能的,在这种情况下,我想使用 * 前缀,但这对性能也很不利。有什么想法吗?

谢谢

【问题讨论】:

    标签: css less mixins less-mixins


    【解决方案1】:

    .positionBase(testing,16px,0); 应该可以工作(确保在末尾包含一个分号!如果省略,可能会导致更少的编译失败)

    我在这里测试了它:http://lesstester.com/,它工作得很好。

    .positionBase (@name,@size: 16px,@position: 0) {
        [disabled] .icon.@{name}, .disabled .icon.@{name}, .disabled.icon.@{name} {
            background-position: @position*@size -@size;
        }
    
        .icon.@{name} {
            background-position: @position*@size 0;
        }
    
        .icon.@{name}.dark {
            background-position: @position*@size -2*@size;
        }
    
        .icon.@{name}.dark:hover, a:hover .icon.@{name}.dark, button:hover .icon.@{name}.dark, .button:hover .icon.@{name}.dark, .interactable:hover .icon.@{name}.dark {
            background-position: @position*@size -3*@size;
        }
    }
    
    .positionBase(testing,16px,0);
    

    【讨论】:

    • 所以显然你不需要在每一行之后的半色,只需要括号集中间的行,或者独立的行......道德:总是使用半色冒号。
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 2014-06-02
    • 2013-09-10
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多