【发布时间】:2015-05-26 11:50:18
【问题描述】:
有没有办法在 sass mixin 中同时使用可选和可变元素?
我试试
@mixin name($className, $centered: false, $dimension...)
但是第一个维度值被赋值给$centered
切换参数顺序不编译
@mixin name($className, $dimension..., $centered: false )
错误是:
SASSInvalid CSS after "..., $dimension...": expected ")", was ", $centered: fa..."
由于在很多地方(超过 70 个)使用了不带可选参数的 mixin,我不想让你全部更改以添加新参数,所以我想让它成为可选参数?
有什么方法可以改变这个 mixin,或者我必须在没有 $centered 的情况下保留原始版本并使用新参数创建一个 ovverride?p>
有关信息,这是 mixin 主体:
@for $i from 1 through length($dimension){
@if($centered) {
.#{$className}Td#{$i}, .#{$className}Th#{$i} {
width: nth($dimension, $i);
text-align:center;
}
}
@else{
.#{$className}Td#{$i}, .#{$className}Th#{$i} {width: nth($dimension, $i); }
}
}
编辑完整的牛逼示例:
我只是以更快的方式为我的表格的列宽定义 css,所以这个
@include nome("columnsName", 40%, 30%, 30%);
以这种方式呈现:
.columnsNameTd1, .columnsNameTh1{width: 40%;}
.columnsNameTd2, .columnsNameTh2{ width: 30%; }
.columnsNameTd3, .columnsNameTh3{ width: 30%;}
我想要一种将所有列文本对齐居中的方法,看看是否有办法指定要居中的列,默认情况下使所有其他列居中
【问题讨论】:
-
你在第二个 mixin 中
$centered: false之后有一个逗号,.. 因为这应该可以工作。否则你可以试试@if($centered == true)虽然没有它应该可以工作 -
逗号是复制粘贴错误,我添加了编译错误,基本上看起来他在$dimension之后什么都不想要...
-
您可以尝试删除您的 argslist (
...),也许这会终止编译过程。但我假设一个维度需要超过 1 个变量 :( -
是的,我想要的用法是:
@include nome("className", 4%, 4%, 4%, 6%, 70%, 12%, true);