Используем SASS mixins, extend и variables
vladimir чт, 02/14/2013 - 22:59 CSS3
Недавно в Twitter состоялся диалог, в процессе которого я осознал, что многие вещи в SASS для многих новичков (да и не только) могут быть непонятными. В этой статье рассмотрим простые и наиболее важные правила использования переменных, @extend и @mixin в SASS.
Переменные SASS
Используйте переменную, когда у вас есть одно значение, которое вы потом будете применять в коде неоднократно. Например:
$color: #444;
$width: 4em;
.module {
color: $color;
}
Такая запись будет компилироваться в:
.module {
color: #444;
}
Расширения (@extend)
Используйте @exntend, когда необходимо сохранить сразу несколько свойств, чтобы в дальнейшем их передать нужному селектору:
.module {
background: #fff;
color: #444;
}
.main_module {
@extend .module;
min-height: 3em;
}
.sidebar_module {
@extend .module;
min-height: 2em;
}
Такая запись скомпилируется в :
.module, .main_module, .sidebar_module {
background: #fff;
color: #444;
}
.main_module {
min-height: 3em;
}
.sidebar_module {
min-height: 2em;
}
Примеси (@mixin)
@mixin всегда компилируются сразу в CSS , на том месте, где они появляются в коде. Если в расширениях @extend содержатся примеси @mixin, то соответственно правил будет создано больше. Правило записи:
@mixin module { background: #fff; color: #444; }
.main_module {
@include module;
min-height: 3em;
}
.sidebar_module {
@include module;
min-height: 2em;
}
Скомпилируется в :
.main_module {
background: #fff;
color: #444;
min-height: 3em;
}
.sidebar_module {
background: #fff;
color: #444;
min-height: 2em;
}
Вот почему важно использовать @extend – код становится намного короче.
Как правило, я использую @mixin для вычислений. Логика простая, если не нужно передавать переменную, то и @mixin не нужно использовать:
@mixin module($parent-color) {
color: darken($parent-color, 50%);
}
.main_module {
@include module(#ccc);
min-height: 3em;
}
.sidebar_module {
@include module(#444);
min-height: 2em;
}
Такое правило компилируется в:
.main_module {
color: #999;
min-height: 3em;
}
.sidebar_module {
color: #000;
min-height: 2em;
}
- Войдите, чтобы оставлять комментарии





