как задать имя динамического класса scss для значений полей

#css #sass

#css #sass

Вопрос:

Как задать имя динамического класса scss, используя значения полей. Это то, что я пробовал

 $spaceamounts: (1, 3, 5, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 110, 120, 130, 140,150,160,170,180,);  
$sides: (top, bottom, left, right);  

@each $space in $spaceamounts {
  @each $side in $sides {
    .m#{str-slice($side, 0, 1)}-#{$space} {
      margin-#{$side}: #{$space}px !important;
    }
    .p#{str-slice($side, 0, 1)}-#{$space} {
      padding-#{$side}: #{$space}px !important;
    }
  }
} 
  

Поэтому я могу использовать имя класса полей / отступов, например pt-1, mt-10

Но я хочу установить значение $ spaceamounts как 1 ~ 999.

Кто-нибудь знает, как исправить код?

Комментарии:

1. Вы хотите создать класс для каждого значения от 1 до 999?

2. @Amaury Hanser да

Ответ №1:

Если вы хотите создать класс для каждого значения от 1 до 999, вы можете избавиться от $spaceamounts него и использовать @for цикл:

 $sides: (top, bottom, left, right);  

@for $i from 1 through 999 {
  @each $side in $sides {
    .m#{str-slice($side, 0, 1)}-#{$i} {
      margin-#{$side}: #{$i}px !important;
    }
    .p#{str-slice($side, 0, 1)}-#{$i} {
      padding-#{$side}: #{$i}px !important;
    }
  }
} 
  

Как бы то ни было, я думаю, что это не то, что вам следует делать, поскольку это приведет к генерации огромного количества кода.