-
Notifications
You must be signed in to change notification settings - Fork 0
/
_bem.scss
63 lines (59 loc) · 1.45 KB
/
_bem.scss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
* Основная часть.
*/
@import "settings";
/**
* Возвращает имя класса элемента.
*
* @param string $block Имя блока.
* @param string $element Имя элемента.
*
* @return string
*/
@function element-class($block, $element) {
@return #{$block}#{$bem-element-separator}#{$element};
}
/**
* Блок БЭМ.
*
* @param string $name Имя блока.
*/
@mixin block($name) {
.#{$name} {
@content;
}
}
/**
* Элемент блока БЭМ.
*
* @param string $name Имя элемента (или блока, если указан аргумент $extra).
* @param string|bool $extra Имя элемента, если указан.
*/
@mixin element($name, $extra: false) {
@if $extra {
.#{element-class($name, $extra)} {
@content;
}
} @else {
&#{$bem-element-separator}#{$name} {
@content;
}
}
}
/**
* Модификатор БЭМ.
*
* @param string $property Имя свойства.
* @param string|bool $value Необязательное значение свойства.
*/
@mixin modifier($property, $value: true) {
@if $value == true or $value == yes {
&#{$bem-modifier-separator}#{$property} {
@content;
}
} @else {
&#{$bem-modifier-separator}#{$property}#{$bem-modifier-value-separator}#{$value} {
@content;
}
}
}