2013-09-18 2 views
-1

Я пытаюсь написать цикл Sass, который создаст сетку с семантикой отношения.Sass loop для генерации динамических соотношений семантических классов

Я начал с:

$columns:  12 !default; 

@mixin widths-setup($namespace: "") { 
    @for $i from 1 through $columns { 
     .width-#{$i} { 
      width: percentage($i/$columns); 
     } 
    } 
} 

, который производит:

.width-1 { width: 8.33333%; } 

.width-2 { width: 16.66667%; } 

... 

.width-12 { width: 100%; } 

То, что я хотел бы производить, предположительно, с использованием @if состояния является

.width-1-1 { width: 100%; } 

.width-1-2 { width: 50%; } 

.width-2-2 { width: 100%; } 

.width-1-3 { width: 33.3333%; } 

.width-2-3 { width: 66.66667%; } 

.width-3-3 { width: 100%; } 

... 

.width-1-12 { width: 8.3333%; } 

.width-2-12 { width: 16.6666%; } 

.width-3-12 { width: 25%; } 

... 

.width-12-12 { width: 100%; } 

Каждый класс начинается с ширины, второе число увеличивается на единицу во время каждого шага цикла, пока оно не станет равным {$ i}, а третье число - это увеличение {$ i}, которое остановится на число, присвоенное переменной $ columns. ,

Хотя будут ненужные классы (ширина-1-1, ширина-2-2, ширина-3-3 и т. Д.), Которые будут иметь одинаковую ширину, но это раздувание не касается меня в это время ,

+0

Почему вы используете Sass для * намеренно * генерируете неземные имена классов? – cimmanon

+0

Прежде всего - ваш комментарий не был очень полезен. Во-вторых, я намерен использовать расширение для семантической разметки, но это не относится к делу. Наконец, отношение является семантическим, если вы рассматриваете определенные сценарии контента, о которых вы не знаете. Спасибо, Кимманон за чудесное наблюдение. – user1512126

+0

Соотношения не имеют ничего общего с семантикой в ​​99% случаев, они полностью визуальны. Если бы вы упоминали, что вы делали это для целей '@ extend', я бы сказал вам, что это совершенно неэффективно подходит к проблеме из-за раздувания кода (см. Http://codereview.stackexchange.com/a/ 27910/26722) и из-за невозможности использования '@ extend' по медиа-запросам. Что еще вы хотели бы поделиться? – cimmanon

ответ

2
$columns: 12 !default; 

@mixin widths-setup($namespace: "") { 
    @for $i from 1 through $columns { 
     $cols: $i; 
     @for $k from 1 through $cols { 
      .width-#{$k}-#{$i} { 
       width: percentage($k/$cols); 
      } 
     } 
    } 
} 

Это должно вывести ожидаемый (но все еще раздутый) результат.

+0

Спасибо, Lar_zzz. Теперь я могу использовать селектора-заполнители для управления раздуванием с помощью другого mixin, чтобы включить имена symantic & single class в HTMl, а также поддерживать lean css. – user1512126

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