В докладе я расскажу о том, как в Softline пришли к БЭМ, который используется в HTML/CSS-вёрстке уже около трёх лет. Для БЭМ у нас есть собственный фреймворк (ядро XML+XSLT), но мы всегда хотим двигаться вперёд — и расскажем о своих планах. Поговорим о возникавших проблемах, интересных решениях, об особенностях построения процессов в нашей компании. Я покажу, как мы используем bem-tools, как пишем CSS по БЭМ-методу, а также разберу несколько примеров исходного кода XML и CSS.
5. Эволюционные изменения
• HTML — свой BEMXML
• CSS — классическая нотация записи CSS-классов,
разбиение на файлы блоков
• JS
05
6. Пишем HTML по БЭМ — BEMXML
• преобразовение БЭМ-дерева в DOM-дерево
• управление семантикой узлов
• простая система шаблонов
• возможность подключать XSLT-шаблоны (но их никто не пишет :)
Достаточно уметь писать XML и знать BEMXML-синтаксис
https://github.com/bivihoba/slcf-compiler
06
22. Как мы пишем CSS по БЭМ
• Каскад
• Миксы
• Блок vs. модификатор
• Сочетание модификаторов
• Блоки на файловой системе
09
23. Блок + элемент блока
01. .b-region
02.
.b-region __title {
margin-right: 20px;
03. }
Излишне, такая связь заложена на уровне синтаксиса
10
24. Модификатор блока + элемент
.b-list_type_simple .b-list__item {}
01. <ul class="b-list b-list_type_simple">
02.
<li class=" b-list__item ">
03.
<ol class="b-list b-list_type_numeric">
04.
<li class=" b-list__item ">
Приемлимо, но могут быть неприятные эффекты
11
25. Сущности из разных блоков
.b-article .b-link {...} /* «межблочный каскад» */
неприемлимо, но по-разному — зависит от семантики:
01.
.b-article .b-link {}
02.
.b-pagination .b-link {}
12
26. Полегче с миксами!
• «узаконенный каскад»
• микс != глобальный модификатор
.b-inline {display:inline;}
<h4 class="b-product__title b-inline "/>
Блок должен иметь ценность сам по себе.
13
34. Больше типов. Общие модификаторы
• type - ключевые свойства и особенности
• layout - раскладка
• viewtype - представление
• viewtype-theme - тема/скин в пределах выбранного viewtype
• content - содержимое
• context - контекст
21