我对box-shadow
的 lesscss mixin 是这样的:
.box-shadow(@x, @y, @blur, @color, @addit: ''){
-webkit-box-shadow: @x @y @blur @color @addit;
-moz-box-shadow: @x @y @blur @color @addit;
box-shadow: @x @y @blur @color @addit;
}
如您所见,有一个参数@addit
默认设置为''
。
当我给@addit
一个像.box-shadow(0, 0, 2px, #1361aa, inset)
这样的值时,它工作正常,但是为什么如果@addit的参数没有填充,那么它不起作用?以及如何解决它?
帮助,谢谢你提前。
答案 0 :(得分:9)
您需要将默认值设置为~''
,以便它是转义字符串。
<强> LESS 强>
.box-shadow(@x, @y, @blur, @color, @addit: ~''){
-webkit-box-shadow: @x @y @blur @color @addit;
-moz-box-shadow: @x @y @blur @color @addit;
box-shadow: @x @y @blur @color @addit;
}
.test{
.box-shadow(0, 0, 2px, #1361aa)
}
<强> CSS 强>
.test {
-webkit-box-shadow: 0 0 2px #1361aa ;
-moz-box-shadow: 0 0 2px #1361aa ;
box-shadow: 0 0 2px #1361aa ;
}
答案 1 :(得分:2)
您无法使用''
,因为它会向box-shadow添加无效参数。这是.box-shadow(2px, 2px, 5px, #F00);
#myDiv {
-webkit-box-shadow:2px 2px 5px #ff0000 '';
-moz-box-shadow:2px 2px 5px #ff0000 '';
box-shadow:2px 2px 5px #ff0000 '';
}
正如您所看到的,LESS CSS支持字符串和空字符串作为参数,但是,CSS无法识别这一点,并将其作为无效样式丢弃。
你可以做到的一种方法就是使用两个名称相同但参数数量不同的mixin(类似于重载):
.box-shadow(@x, @y, @blur, @color) {
-webkit-box-shadow: @x @y @blur @color;
-moz-box-shadow: @x @y @blur @color;
box-shadow: @x @y @blur @color;
}
.box-shadow(@x, @y, @blur, @color, @addit) {
-webkit-box-shadow: @x @y @blur @color @addit;
-moz-box-shadow: @x @y @blur @color @addit;
box-shadow: @x @y @blur @color @addit;
}
对此进行测试并使用以下内容:
.box-shadow(2px, 2px, 5px, #F00);
.box-shadow(2px, 2px, 5px, #F00, inset);