栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

更少的js:Mixin属性作为另一个mixin的参数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

更少的js:Mixin属性作为另一个mixin的参数?

好的,首先,有个一般性的评论:使用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:修复了一些错误。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416249.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号