如何创建一个使用嵌套mixin属性作为参数的mixin?
我用下一个示例解释自己。
我有一个“过渡属性”混合:
.transition-property (@props){
-webkit-transition-property: @props;
-moz-transition-property: @props;
-o-transition-property: @props;
transition-property: @props;
}
从这个mixin我想使用一个’transform’mixin属性,所以我试图这样称呼:
.transition-property(~"opacity, .transform");
‘.transform’mixin应该返回以下值之一:
transform
-ms-transform
-webkit-transform
问题是我找不到将这些属性名称注入“过渡属性” mixin的方法,有人可以对此有所了解吗?
最终所需的CSS
element {
-webkit-transition-property: opacity, -webkit-transform;
-moz-transition-property: opacity, -moz-transform;
-o-transition-property: opacity, -o-transform;
transition-property: opacity, transform;
}
好的,首先,有个一般性的评论:使用CSS预处理器(例如LESS,SASS或其他任何东西)生成供应商前缀实际上是当今滥用最大的方法之一(确实,不需要用前缀和浪费来充实您的代码)您需要花费时间编写此类mixin,因为出现了诸如Autoprefixer,-prefix-free之类的工具。
不管哪种方式,这都是(多种)通用解决方案(但考虑到代码量及其复杂性,我认为这实际上是一个矫kill过正的方法,在这里,我将使用LESS1.6.0示例,因为在早期版本中,它会变得更加冗长而笨拙):
// usage:
element1 {
.vendorize(transition-property; opacity, transform);
}
element2 {
.vendorize(transition-property; width, box-shadow, color);
}
element3 {
.vendorize(transition-property; height);
}
// implementation:
// prefixes we want to be used:
@prefixes: -webkit-, -moz-, -o-, ~'';
// here we specialize what values are to be prefixed:
.vendorize-value(transform) {.true}
.vendorize-value(box-shadow) {.true}
// etc.
.vendorize-value(...) when (default()) {.false} // to handle not prefixed values
// and now the mixin that can apply all of above specializations:
.vendorize(@property, @values) {
.-1();
.-1(@i: length(@prefixes)) when (@i > 0) {
.-1((@i - 1));
@prefix: extract(@prefixes, @i);
.-2();
}
.-2(@j: length(@values)) when (@j > 0) {
.-2((@j - 1));
@value: extract(@values, @j);
.vendorize-value(@value);
}
.false() {@{prefix}@{property}+: @value}
.true() {@{prefix}@{property}+: ~'@{prefix}@{value}'}
}
(当然,如果您 只 transform
需要加上前缀,但看起来仍然太疯狂,则可以简化一下)。
upd:修复了一些错误。
问题内容: 我尝试建立一些通用的边距/填充混合… 这是我的代码: 某些事情不正确,所以我想知道是否可以将一些CSS属性设置为mixin值吗?有人可以帮忙吗? 问题答案: 如果要使用变量作为属性名称,则需要使用 字符串插值 - 。 所以这应该工作: 只需注意: 对于属性选择器… 也将适用于其中的属性选择器 …因此也许您应该重新考虑一下。
描述 (Description) 每当mixin在另一个mixin中定义时,它也可以用作返回值。 例子 (Example) 以下示例演示了mixin inside mixin中使用mixin inside mixin的LESS文件 - <html> <head> <link rel = "stylesheet" href = "style.css" type = "text/cs
这是我的代码: 我想将的值设置为,我该怎么做?我试过,
我试图创建一个类来保存数量可变的项(它们本身就是另一个类对象)。 我有第二课: 然后类1包含类2的数组: 我想做的是: 第一行设置myQuotes。Curr是没有问题的,但是当我试图在数组中设置一个值时,下一行错误与运行时91对象变量或块变量未设置 有没有关于我做错了什么以及如何设置类数组中元素的值的指针? 提前谢谢!
问题内容: 因此,我最近开始涉足OOP,到目前为止一切进展顺利。虽然我本身没有任何问题,但我希望有一个令人惊奇的功能,尽管我找不到关于该功能的任何文档。 在为对象分配属性时,我经常发现我必须更改依赖于他人的属性,例如光明与黑暗。这是一个例子: 现在,尽管这很酷,但我想要的是相同的过程,但是如果一个属性发生更改,则在同一对象内。如果我重置光的属性(是的),我希望黑暗相应地增加/减少。如果可以更改光的
一些maven插件有一个“encoding”参数,该参数有一个与之关联的属性,还有一个默认值,也是一个属性。 看起来这两个属性执行相同的操作: 这种冗余有什么原因吗?插件参数的“用户属性”属性和同一参数的“默认”属性之间有区别吗?