首页 > 代码库 > sass compact方法的实现
sass compact方法的实现
不想依赖compass的编译器,但sass的又没有compact方法,于是自己造轮子。最早时在stackoverflow看到一个
@function compact($var-1, $var-2: false, $var-3: false, $var-4: false, $var-5: false, $var-6: false, $var-7: false, $var-8: false, $var-9: false, $var-10: false) { $full: $var-1; $vars: $var-2, $var-3, $var-4, $var-5, $var-6, $var-7, $var-8, $var-9, $var-10; @each $var in $vars { @if $var { $full: $full, $var; } } @return $full;}.aaa { content: compact(1,2, null,7, 0 ,44);}
这里有一个神奇的用法,如何将一个个元素串起一个数组($full: $full, $var)
不过太怪了,@if又不写小括号,有点像ruby。更奇怪的是,它的@if不会过滤0。下面是我造的轮子,改动不大。
@function compact($var-1, $var-2: false, $var-3: false, $var-4: false, $var-5: false, $var-6: false, $var-7: false, $var-8: false, $var-9: false, $var-10: false) { $full:(); $vars: $var-1, $var-2, $var-3, $var-4, $var-5, $var-6, $var-7, $var-8, $var-9, $var-10; @each $var in $vars { @if ($var){ $full : append($full, $var, comma); } } @return $full;}.aaa { content: compact(1,2, null,7, 0 ,44);}
轮子3,使用可变长参数,节省大量代码。轮子越造越好,超越老外了。
@function compact($args...) { $ret: (); @each $i in $args{ @if($i){//if 不会过滤0 $ret: append($ret, $i, comma); } } @return $ret;}.aaa { content: compact(blue, red, false, green);}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。