@rtfmmftr
кратко о себе

Миксины в SASS: когда пора остановиться?

Влюбился в миксины до такой степени что уже каждое свойство в них заворачиваю.
Например:
+circle вместо border-radius: 50%
+border вместо border: 1px solid red //для отладки
+block вместо display: block
+pseudo вместо position: absolute; content: ""
+v-center вместо position: absolute; top: 50%, transform: translateY(-50%)
и т. д.
Это нормально или уже слишком?
  • Вопрос задан
  • 3952 просмотра
Пригласить эксперта
Ответы на вопрос 2
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Эм, я конечно извиняюсь, что влезаю. Но mixin'ы существуют несколько не для того.

Печатая код на SASS/SCSS, нужно всегда задумываться о том, как он будет выглядеть на выходе.

Кликните сюда
SCSS-код
@mixin example{
   border: 1px solid red;
}

.class1{
   @include example;
}

.class2{
   @include example;
}


На выходе CSS-код:
.class1{
   border: 1px solid red;
}

.class2{
   border: 1px solid red;
}



Опа, дубль. Куда лучше было бы в такой ситуации использовать extend'ы:

Теперь сюда
SCSS-код
%_example{
   border: 1px solid red;
}

.class1{
   @extend %_example;
}

.class2{
   @extend %_example;
}


На выходе CSS-код:
.class1,  .class2{
   border: 1px solid red;
}



Так для чего же нужны mixin'ы? Они нужны в двух случаях.

  1. Когда не подойдет использование групповых селекторов.
  2. Когда мы можем составить шаблон из свойств, но заранее не знаем какие будут их значения. То есть, когда мы в mixin будем передавать аргументы.

_
Ну и сюда
SCSS-код
@mixin example($width, $color){
   border: $width solid $color;
}

.class1{
   @include example(1px, red);
}

.class2{
   @include example(2px, yellow);
}


На выходе CSS-код:
.class1{
   border: 1px solid red;
}

.class2{
   border: 2px solid yellow;
}

Ответ написан
Имхо, миксины имеют смысл в случае, когда применяемых свойств несколько, или когда свойство \ набор свойств применяются к однотипному набору объектов. Например, миксин box-shadow имеет смысл, если там юзается фоллбэк с filter для IE.

Из перечисленного я бы оставил только миксин v-center.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы