2017-04-07 74 views
0

我想每个人都会明白,我尝试到:SCSS - 简单每个阵列

@each $num, $mult, $space in ('01', 1, '16px'), ('02', 2, '32px'), ('03', 3, '48px'), ('04', 4, '64px'), ('05', 5, '80px'), ('06', 6, '96px') { 
    &.item-#{$num} { 
     right: $sideNavWidth * $mult + $space; 
    } 
    } 

但对于项目-01的最终结果是:正确的:“320px16px”;这是无效的...为什么Node-Sass不给我一个干净的结果?我的阵列有什么问题?

它同样喜欢:

&.item-01 { 
    right: $sideNavWidth + 16px; 
    } 
    &.item-02 { 
    right: $sideNavWidth * 2 + 32px; 
    } 
    &.item-03 { 
    right: $sideNavWidth * 3 + 48px; 
    } 
    &.item-04 { 
    right: $sideNavWidth * 4 + 64px; 
    } 
    &.item-05 { 
    right: $sideNavWidth * 5 + 80px; 
    } 
    &.item-06 { 
    right: $sideNavWidth * 6 + 96px; 
    } 

而最终的结果一定是:

.item-01{right:336px} 
    .item-02{right:672px} 
    .item-03{right:1008px} 
    .item-04{right:1344px} 
    .item-05{right:1680px} 
    .item-06{right:2016px} 

而且任何人看到一个更聪明的方式做到这一点,我尝试做?

此致敬礼。

+0

什么是所需的输出? –

+0

我更新了我的帖子 – Budi

+0

不要更改问题中的代码。如果有更新,请在帖子后面追加。 –

回答

2

删除数组中像素值的引号。

像这样:

$sideNavWidth: 320px; 

.e { 
    @each $num, $mult, $space in ('01', 1, 16px), ('02', 2, 32px), ('03', 3, 48px), ('04', 4, 64px), ('05', 5, 80px), ('06', 6, 96px) { 
    &.item-#{$num} { 
     right: $sideNavWidth * $mult + $space; 
    } 
    } 
} 

在你问一个更有效的方式来做到这一点的意见,所以我想出了这个:

$sideNavWidth: 320px; 

.n { 
    @for $i from 1 through 6 { 
    $z: ''; 
    @if ($i < 10) { $z: '0'; } 
    &.item-#{$z}#{$i} { 
     right: ($sideNavWidth * $i) + (($i * 2) * 8); 
    } 
    } 
} 
+0

啊,谢谢多数民众赞成它! =)你认为,有什么办法解决这个“更聪明”? (更短的代码) – Budi

+0

@Budi没问题!我用更高效的代码版本更新了我的答案。 –

+0

哦耶!这看起来很棒!我没有真正理解代码,但它很短,看起来很干净。非常感谢这个=) – Budi