我有以下mixin
@mixin arrows($arrowdirection:"left", $arrowsize:"5px", $arrowcolor:$navbgblue ) {
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
@if $arrowdirection == "right" {
border-top: $arrowsize + px;
border-bottom: $arrowsize + px;
border-left: $arrowsize + px $arrowcolor;
} @else if $arrowdirection == "left" {
border-top: $arrowsize + px;
border-bottom: $arrowsize + px;
border-right:$arrowsize + px $arrowcolor;
} @else if $arrowdirection == "up" {
border-bottom: $arrowsize + px $arrowcolor;
border-left: $arrowsize + px;
border-right: $arrowsize + px;
} @else if $arrowdirection == "down" {
border-left: $arrowsize + px;
border-right: $arrowsize + px;
border-top: $arrowsize + px $arrowcolor;
}
}
对于某些(无疑是显而易见的)原因,如果我使用默认值或在其中传递了某些内容,则拒绝工作
.test{
@include arrows("left", "5px", "blue");
}
我只得到CSS
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
所以我的if / else某种程度上没有发挥作用。为什么呢?
首先,除非您希望将变量视为字符串(在CSS输出中将字符串引用),否则您不想引用变量。将默认值作为“ else”的一部分而不是“ else if”的一部分是一个好主意。
您是在查看生成的CSS还是从Firebug之类的文件中查看它?因为如果我按原样复制/粘贴您的mixin,则会得到以下输出:
这是mixin的重构版本,其中所有引号和多余的“ px”已删除:
我得到以下输出: