我有这个变量:
$gutter: 10;
我想在像SCSS这样的选择器中使用它:
.grid+$gutter {
background: red;
}
所以输出变为CSS:
.grid10 {
background: red;
}
但这不起作用。有可能吗?
答案 0 :(得分:98)
$gutter: 10;
.grid#{$gutter} {
background: red;
}
如果在字符串中使用,例如在url中使用:
background: url('/ui/all/fonts/#{$filename}.woff')
答案 1 :(得分:38)
来自Sass Reference on "Interpolation":
您还可以使用#{}插值语法在选择器和属性名称中使用SassScript变量:
$gutter: 10;
.grid#{$gutter} {
background: red;
}
此外,插值工作不需要@each
指令,并且由于$gutter
只包含一个值,因此不需要循环。
如果您有多个值来创建规则,则可以使用Sass list和@each
:
$grid: 10, 40, 120, 240;
@each $i in $grid {
.g#{$i}{
width: #{$i}px;
}
}
...生成以下输出:
.g10 { width: 10px; }
.g40 { width: 40px; }
.g120 { width: 120px; }
.g240 { width: 240px; }
答案 2 :(得分:2)
这是解决方案
$gutter: 10;
@each $i in $gutter {
.g#{$i}{
background: red;
}
}
答案 3 :(得分:0)
如果它是供应商前缀,那么在我的情况下,mixin无法编译。所以我用这个例子
@mixin range-thumb()
-webkit-appearance: none;
border: 1px solid #000000;
height: 36px;
width: 16px;
border-radius: 3px;
background: #ffffff;
cursor: pointer;
margin-top: -14px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
input[type=range]
&::-webkit-slider-thumb
@include range-thumb()
&::-moz-range-thumb
@include range-thumb()
&::-ms-thumb
@include range-thumb()