2015-10-08 2 views
4

Я хочу, чтобы определить классы какSCSS mixin, как объединить единицы? (ПВ,%, эм)

.bg-1 { 
    width: 1% 
} 
.bg-2 { 
    width: 2% 
} 

И я пытаюсь с этим:

@for $i from 1 through 100 {  
    .bg-#{$i} { 
    width: #{$i}; 
    } 
} 

Это, по крайней мере компилирует, но печатает

.bg-1 { 
     width: 1; 
    } 
    .bg-2 { 
     width: 2; 
    } 

проблема заключается в том, что если я добавлю:

width: #{$i}%; 

я получил:

error sass/screen.scss (Line 294 of sass/modules/_classes.scss: Invalid CSS after " $var: ": expected expression (e.g. 1px, bold), was "%;") 
+0

Попробуйте 'ширина: # {$ I} + '%';' 'или ширина: # {$ I} '%';' –

+0

Это создает '.bg-95 {ширина: 95 +",% "}' или '.bg-95 {width: 95"% "}' ... –

+0

@cimmanom Если вы имеете в виду, что я должен '$ percent: 1%', а затем 'width: # {$ i} * $ percent «Я пробовал, прежде чем спрашивать ... и результат был« .bg-95 {width: 95 * 1% »}' –

ответ

1

Попробуйте это решение. Оно работает.

@for $i from 1 through 100 {  
    .bg-#{$i} { 
    $percentage: unquote("%"); 
    width: #{$i}$percentage; 
    } 
} 

Или это:

@for $i from 1 through 100 {  
    .bg-#{$i} { 
    width: #{$i}unquote("%"); 
    } 
} 
+0

Абсолютно нет, это на 100% неправильно неправильно, не делайте этого. – cimmanon

+0

Можете ли вы рассказать мне почему это так неправильно? – marisaroque

+0

Да, почему ?. Вы не можете просто сказать это и не уточнять .. –

0

Или что-то вроде этого, который является более популярным.

@for $i from 1 through 100 {  
    .bg-#{$i} { 
    width: round(percentage($i/100)); // Math function 
    height: #{$i}px; // For px or em just concat 
    } 
} 
+0

Абсолютно нет, это на 100% неправильно неправильно, не делайте этого. – cimmanon

+0

О чем ты говоришь ?! строит просто отлично и не является взломом. Это не вопрос, а что-то практическое, но может ли это быть сделано или нет. Сасс не выдает ошибку, поэтому это правильный ответ. – sperovic

+0

Просто потому, что он компилируется, не делает его «правильным» ответом. – cimmanon

Смежные вопросы