gpt4 book ai didi

less - 有没有在LESS中添加供应商前缀的通用方法?

转载 作者:行者123 更新时间:2023-12-03 11:36:38 28 4
gpt4 key购买 nike

我目前有一个mixins.less文件,几乎所有的mixin基本上都是相同的:

.border-radius(@radius) {
-webkit-border-radius: @radius;
-khtml-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}

.box-shadow(@value) {
-webkit-box-shadow: @value;
-khtml-box-shadow: @value;
-moz-box-shadow: @value;
box-shadow: @value;
}

有没有一种方法可以创建某种通用的mixin,我可以这样称呼它:
.vendor('border-radius', '3px');
.vendor('box-shadox', '10px 10px');

哪个会产生与上述相同的结果?

最佳答案

注意:

建议停止使用此技术,并考虑使用专用的前缀工具(例如Autoprefixer-prefix-free等)。如今,通过CSS预处理器mixin(Less,SCSS或其他任何东西)对供应商前缀进行硬编码是一种纯粹的反模式,并且被认为是有害的。自动前缀工具将使您的代码干净,易读,面向 future 并易于维护/自定义。

参见例如: less-plugin-autoprefix

原始答案:

好吧,当前LESS不支持“属性名称插值”,因此您不能在属性名称中使用变量。但是有一个hack:How to pass a property name as an argument to a mixin in less
因此,如果您不介意输出CSS中的“虚拟”属性,请执行以下操作:

.property_(@property, @value) {
_: ~"; @{property}:" @value;
}

.vendor(@property, @value) {
.property_('-webkit-@{property}', @value);
.property_( '-khtml-@{property}', @value);
.property_( '-moz-@{property}', @value);
.property_( @property, @value);
}

#usage {
.vendor(border-radius, 3px);
.vendor(box-shadow, 10px 10px);
}

输出:

#usage {
_: ; -webkit-border-radius: 3px;
_: ; -khtml-border-radius: 3px;
_: ; -moz-border-radius: 3px;
_: ; border-radius: 3px;
_: ; -webkit-box-shadow: 10px 10px;
_: ; -khtml-box-shadow: 10px 10px;
_: ; -moz-box-shadow: 10px 10px;
_: ; box-shadow: 10px 10px;
}

更新:

v1.6.0引入了 Property Interpolation功能,因此现在您不再需要任何技巧:

.vendor(@property, @value) {
-webkit-@{property}: @value;
-khtml-@{property}: @value;
-moz-@{property}: @value;
@{property}: @value;
}

#usage {
.vendor(border-radius, 3px);
.vendor(box-shadow, 10px 10px);
}

关于less - 有没有在LESS中添加供应商前缀的通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558368/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com