我尝试将可变数量的div变暗,例如 使用以下代码:
@mixin color-divs ($count, $baseName, $startcolor) {
$color: $startcolor;
@for $i from 0 through $count {
$color: darken($color, 9%);
##{$baseName}_#{$i} { background-color:$color; }
}
}
使用我期望的代码,变量$ color会随着每次迭代而改变,但是这并没有按预期工作。在第一次初始化后,该值将被修复,并且每个元素都具有相同的颜色。
有没有办法解决这个问题,还是有另一种方法可以解决混合问题?
答案 0 :(得分:8)
你可以在@for中使用$ i使颜色变暗,并将相应的类应用于div。希望这会有所帮助。
<强> SCSS 强>
@mixin color-divs ($count, $baseName, $startcolor) {
@for $i from 0 through $count {
$background-color: darken($startcolor, $i * $i);
.colored-div#{$i} {
background: $background-color;
height:100px;
width:200px;
float: left;
margin-right: 5px;
}
}
}
@include color-divs(5,'a',#ffd8b1);
<强> HTML 强>
<div class="colored-div1">a</div>
<div class="colored-div2">b</div>
<div class="colored-div3">c</div>
<div class="colored-div4">d</div>
<div class="colored-div5">e</div>
<强>演示强>
请参阅demo
答案 1 :(得分:3)
我根据你的mixin创建了这个例子:
@mixin color-divs ($count, $baseName, $startcolor) {
$loop_color: $startcolor;
@for $i from 0 through $count {
$loop_color: darken($loop_color, 9%);
.#{$baseName}-#{$i} { background-color: $loop_color; }
}
}
div {
width: 100px;
height: 100px;
float: left;
}
@include color-divs(6,'div',#faa)
与以下标记一起使用:
<div class="div-1"></div>
<div class="div-2"></div>
<div class="div-3"></div>
<div class="div-4"></div>
<div class="div-5"></div>
<div class="div-6"></div>
http://uk.omg.li/P0dF/by%20default%202013-05-16%20at%2010.10.43.png
div {
width: 100px;
height: 100px;
float: left; }
.div-0 {
background-color: #ff7c7c; }
.div-1 {
background-color: #ff4e4e; }
.div-2 {
background-color: #ff2020; }
.div-3 {
background-color: #f10000; }
.div-4 {
background-color: #c30000; }
.div-5 {
background-color: #960000; }
.div-6 {
background-color: #680000; }
答案 2 :(得分:0)
要从一种颜色变为另一种颜色,例如连续多个<div>
:
@for $i from 0 through 11
&:nth-child(#{$i})
transform: rotate(#{30*$i}deg)
background-color: mix($gray1, $gray2, $i / 12 * 100% )
注释
#{…}
内不需要任何mix()
,因为它是一个sass函数,因此很明显,内部使用的所有变量和计算都必须在将其转换为CSS之前进行解析。 。#{…}
+/-1 issue
(就像每个for循环中的任何语言一样):从0/12到11/12