我现在正在泡菜.我需要在Sass循环中对选择器进行分组.我已尝试过许多不同的方法来做到这一点,例如:
body {
$store: null;
@for $i from 1 through 10 {
$store: append($store, ".offset-by-#{$i}", comma);
}
// produces content: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
@each $j in $store {
$store: unquote($j);
}
// produces .offset-by-10
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用纯Sass(没有Ruby)实现的目标如下:
.offset-by-1,
.offset-by-2,
.offset-by-3,
...
.offset-by-10 { foo: bar; }
Run Code Online (Sandbox Code Playgroud)
如果你是萨斯神,请告诉我这里要做什么.如果这是元语言的固有限制,那么请告诉我这一点!
我不能使用mixin之外的任何东西来实现这一点,因为函数应该用在属性值上.另一方面,Mixins允许生成整个代码块.
And*_*aus 12
保持简单,士兵!
%foo {
foo: bar; }
@for $i from 1 through 10 {
.offset-by-#{$i} {
@extend %foo; }}
Run Code Online (Sandbox Code Playgroud)
UPD你也可以用这种方法获得个人风格:
%foo {
foo: bar; }
@for $i from 1 through 10 {
.offset-by-#{$i} {
@extend %foo;
margin-left: 50px * $i; }}
Run Code Online (Sandbox Code Playgroud)
这导致以下CSS:
.offset-by-1, .offset-by-2, .offset-by-3, .offset-by-4, .offset-by-5, .offset-by-6, .offset-by-7, .offset-by-8, .offset-by-9, .offset-by-10 {
foo: bar; }
.offset-by-1 {
margin-left: 50px; }
.offset-by-2 {
margin-left: 100px; }
.offset-by-3 {
margin-left: 150px; }
.offset-by-4 {
margin-left: 200px; }
.offset-by-5 {
margin-left: 250px; }
.offset-by-6 {
margin-left: 300px; }
.offset-by-7 {
margin-left: 350px; }
.offset-by-8 {
margin-left: 400px; }
.offset-by-9 {
margin-left: 450px; }
.offset-by-10 {
margin-left: 500px; }
Run Code Online (Sandbox Code Playgroud)
你尝试过这样的事情:
@mixin createNumbered($num, $className){
@for $i from 1 through $num {
.#{$className}-#{$i} {
@content;
}
}
}
@include createNumbered(10, 'foo-bar'){
color: white;
}
Run Code Online (Sandbox Code Playgroud)
更新:
@mixin createNumbered($num, $className){
$foo : '';
@for $i from 1 through $num {
$foo : $foo + '.' + $className + '-' + $i + ', ';
}
#{$foo} {
@content;
}
}
@include createNumbered(10, 'foo-bar'){
color: white;
}
Run Code Online (Sandbox Code Playgroud)