SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
CSS по БЕМ
Руслан Хомяк,
1
CSS до БЕМ
#header div span a {...}
.content .container div span p {...}
.wrapper form .line input {...}
div.footer.black ul li span {...}
.main-content div div a {...}
footer div > div p a.button {...}
01.
02.
03.
04.
05.
06.
2
3
БЕМ (Блок, Елемент, Модифікатор) — методологія, яка забезпечує
компонентний підхід до веб-розробки. В її основі лежить принцип розділу
інтерфейсу на незалежні блоки. Це дозволяє легко і швидко розробляти
інтерфейси будь-якої складності і повторно використовувати існуючий
код.
4
Блок
Логічно і функціонально абсолютно незалежний компонент сторінки, який
є самодостатнім і може бути використаний в будь-якому місці проекту,
при цьому не втрачаючи свого смислу.
5
Особливості блоку
1. Назва повинна характерезувати смисл блоку, а не його стан.
2. Блок не повинен впливати на своє оточення (відступи, позиціонування).
6
Приклад блоку
<!-- Правильно. Семантично осмислений блок 'logo'-->
<div class="logo"></div>
<!-- Неправильно. Описано зовнішній вигляд -->
<div class="top-big-logo"></div>
7
Принцип роботи з блоками
Вкладеність
1. Блоки можна вкладати один в одного.
2. Дозволяється будь-яка вкладеність блоків.
8
<header class="header">
<nav class="menu">
</nav>
</header>
HTML реалізація блоків
<div class="logo"></div>
<ul class="submenu"></ul>
<div class="search"></div>
01.
02.
03.
04.
05.
06.
07.
9
CSS реалізація блоків
<!-- Правильно. Всі блоки абсолютно незалежні. Можуть бути використані у
будь-якому місці проекту.-->
.header {...}
.logo {...}
.menu {...}
.submenu {...}
.search {...}
01.
02.
03.
04.
05.
10
CSS реалізація блоків
<!-- Неправильно. Блоки залежні від своїх батьків і не можуть бути
використаними без них.-->
.header .logo {...}
.header .menu {...}
.header .menu .submenu {...}
.header .search {...}
01.
02.
03.
04.
11
Елемент
Частина блоку, яка зв'язана з ним по смислу і функціонально. Елемент не
може використовуватись без блоку до якого відноситься.
12
Особливості елементу
1. Назва повинна характерезувати смисл елементу, а не його стан.
2. Ім'я елементу відділяється від імені блоку двома підресленнями.
13
<div class="product">
</div>
Приклад елементів
<img class="product__picture">
<h4 class="product__name"></h4>
<span class="product__price"></span>
<button class="product__order"></button>
01.
02.
03.
04.
05.
06.
14
Принципи роботи з елементами
1. Вкладеність
2. Належність
3. Необов'язковість
15
Вкладеність елементів
1. Елементи можна вкладати один в одного.
2. Дозволяється будь-яка вкладеність елементів.
3. Елемент - це завжди частина блоку, тобто він не може бути частиною
іншого елементу.
16
<div class="product">
<div class="product__info">
</div>
<div class="product__action">
</div>
</div>
HTML реалізація елементів
<!-- Правильно. Структура назви елементів відповідає схемі: 'block-name__element-name'-->
<img class="product__picture">
<h4 class="product__name"></h4>
<span class="product__price"></span>
<a href="#" class="product__view"></a>
<button class="product__order"></button>
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
17
CSS реалізація елементів
<!-- Правильно. Елементи знаходяться на одному рівні.-->
.product {...}
.product__picture {...}
.product__info {...}
.product__name {...}
.product__price {...}
.product__action {...}
.product__view {...}
.product__order {...}
Це дозволяє змінювати DOM-структуру без внесення змін в коді кожного окремого елементу.
01.
02.
03.
04.
05.
06.
07.
08.
18
CSS реалізація елементів
<!-- Неправильно. Присутній каскад для елементів.-->
.product {...}
.product__picture {...}
.product__info .product__name {...}
.product__info .product__price {...}
.product__action {...}
.product__action .product__view {...}
.product__action .product__order {...}
01.
02.
03.
04.
05.
06.
07.
19
<div class="product">
<div class="product__info">
</div>
<div class="product__action">
</div>
</div>
HTML реалізація елементів
<!-- Неправильно. Структура назви елементів не відповідає схемі: 'block-name__element-name'-->
<img class="product__picture">
<h4 class="product__info__name"></h4>
<span class="product__info__price"></span>
<a href="#" class="product__action__view"></a>
<button class="product__action__order"></button>
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
20
<div class="product">
<div class="product__info">
</div>
<div class="product__action">
</div>
</div>
<!-- Неправильно. Структура назви елементів не відповідає схемі: 'block-name__element-name'-->
<img class="product__picture">
<h4 class="product__info__name"></h4>
<span class="product__info__description"></span>
<span class="product__info__price">
<span class="product__info__price__old"></span>
<span class="product__info__price__new"></span>
</span>
<a href="#" class="product__action__view"></a>
<button class="product__action__order"></button>
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
21
Належність елементів
Елемент - це завжди частина блоку, він не повинен використовуватись
окремо від нього.
22
<div class="product">
</div>
HTML реалізація
<!-- Правильно. Елементи лежать всередині блоку 'product'.-->
<img class="product__picture">
<h4 class="product__name"></h4>
<span class="product__price"></span>
<button class="product__order"></button>
01.
02.
03.
04.
05.
06.
23
<div class="product">
</div>
HTML реалізація
<!-- Неправильно. Елементи лежать поза блоком 'product'.-->
<span class="product__price"></span>
<button class="product__order"></button>
<img class="product__picture">
<h4 class="product__name"></h4>
01.
02.
03.
04.
05.
06.
24
<footer class="footer">
</div>
Необов'язковість елементів
Елемент - необов'язкова частина блоку. Не у всіх блоків, повинні бути
елементи.
Наприклад:
<nav class="menu"></nav>
<ul class="social"></ul>
01.
02.
03.
04.
25
Це блок чи елемент?
26
<div class="product">
</div>
Можна легко змінити елемент на блок або
навпаки
<img class="illustration product__picture">
<h4 class="product__name"></h4>
<span class="product__price"></span>
<button class="product__order"></button>
01.
02.
03.
04.
05.
06.
27
Модифікатор
Сутність, яка визначає зовнішній вигляд, стан або поведінку блоку чи
елементу і не може бути викорстана окремо від них. Модифікатор має ім'я
і може мати значення. У блоку або елементу, може бути декілька
модифікаторів одночасно.
28
Особливості модифікаторів
1. Назва повинна характерезувати зовнішній вигляд, стан, або поведінку.
2. Ім'я модифікатора відділяється від імені блоку чи елементу одним
підкресленням.
29
Типи модифікаторів
1. Булевий
2. Ключ-значення
<!-- Блок 'button' має булевий модифікатор 'disabled'-->
<button class="button button_disabled"></button>
<!-- Блок 'button' має модифікатор 'size' зі значенням 's'-->
<button class="button button_size_s"></button>
30
Префікси
1. b- (block) - для позначення звичайного блоку.
2. h- (holster) - для задавання відступів групі блоків.
3. l- (layout) - для розташування інших блоків.
4. g- (global) - для глобальних модифікаторів.
5. js- (JavaScript) - для блоків, які використовують JavaScript.
6. ...
<!-- Приклад використання префіксів -->
<div class="b-button"></div>
<div class="g-clearfix"></div>
З розвитком БЕМ, Яндекс відмовився від префіксів.
31
Мікс
Це прийом, який дозволяє використовувати різні БЕМ-сутності на одному
DOM-вузлі.
32
Мікси дозволяють
1. Поєднувати поведінку і стилі декількох сутностей без дублювання коду.
2. Створювати семантично нові компоненти інтерфейсу на основі тих, які вже
є.
33
header__logo
header__menu
header__search
HTML реалізація міксів
<header class="header">
<div class="logo "></div>
<nav class="menu ">
<ul class="submenu"></ul>
</nav>
<div class="search "></div>
</header>
01.
02.
03.
04.
05.
06.
07.
34
CSS реалізація міксів
.header {...}
.header__logo {зовнішня геометрія, позиціювання}
.header__menu {зовнішня геометрія, позиціювання}
.header__search {зовнішня геометрія, позиціювання}
.logo {...}
.menu {...}
.submenu {...}
.search {...}
01.
02.
03.
04.
05.
06.
07.
08.
35
БЕМ і препроцесори
.product {
&__picture {...}
&__info {...}
&__name {...}
&__price {...}
&__action {...}
&__view {...}
&__order {...}
}
36
БЕМ і CSS-каскад
Основний принцип БЕМ — незалежні блоки. Вкладені селектори
збільшують зв'язаність коду і роблять його повторне використання
неможливим. Каскад не забороняється, але не рекомендується.
37
Наприклад, можна використати вкладеність для зміни теми елементів блоку:
.nav {...}
.nav_theme_light .nav__item {'зміна теми пунктів меню'}
.nav__item {...}
або коли потрібно вивести тест з WYSIWYG:
.text h2 {...}
.text p {...}
.text ul li {...}
38
Які переваги надає БЕМ
• Незалежні блоки
• Семантика
• Відсутність колізій
• Структурованість коду
• Масштабування
• Зменшується час на розробку та підтримку проекту
• Поріг входу на проект мінімальний
39
Як перейти на CSS по БЕМ
• Не використовувати id та теги для селекторів
• Абстрагуватись від DOM-моделі і навчитись створювати блоки
• Мінімізувати кількість вкладених селекторів
• Використовувати правила по іменуванню CSS-класів
• Використовувати мікси
• Повторно використовувати блоки
40
Чому не можна використовувати теги або тег
і клас для селекторів
<a class="button button_active"></a>
a.button {...}
a.button_active {...}
З розвитком проекту можуть з'явитись блоки input.button, span.button,
button.button
41
42
https://ru.bem.info/
43
Дякую за увагу
44

Mais conteúdo relacionado

Mais procurados

Моніторинг адаптації здобувачів освіти 1.6
Моніторинг адаптації здобувачів освіти  1.6Моніторинг адаптації здобувачів освіти  1.6
Моніторинг адаптації здобувачів освіти 1.6olha1koval
 
Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...
Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...
Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...VsimPPT
 
1.8 навички читання вголос учнів 21-22 довідка.pdf
1.8 навички читання вголос учнів 21-22 довідка.pdf1.8 навички читання вголос учнів 21-22 довідка.pdf
1.8 навички читання вголос учнів 21-22 довідка.pdfolha1koval
 
Мистецтво живого слова
Мистецтво живого словаМистецтво живого слова
Мистецтво живого словаHromovyY, Victor
 
Zagor L 288 - Povratak Crnih vukova
Zagor L 288 - Povratak Crnih vukovaZagor L 288 - Povratak Crnih vukova
Zagor L 288 - Povratak Crnih vukovaStripovizijacom
 
ZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJU
ZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJUZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJU
ZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJUStripovizijacom
 
Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...
Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...
Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...VsimPPT
 
Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)
Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)
Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)Darul Amal Chishtia
 
Федієнко В. Цікава математика
Федієнко В. Цікава математикаФедієнко В. Цікава математика
Федієнко В. Цікава математикаКовпитська ЗОШ
 
Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)
Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)
Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)Darul Amal Chishtia
 
презентація елемент керування кнопка
презентація   елемент керування кнопкапрезентація   елемент керування кнопка
презентація елемент керування кнопкаСергій Каляфіцький
 
Zagor LIB KB 049 - Kaznena ekspedicija
Zagor LIB KB 049 - Kaznena ekspedicijaZagor LIB KB 049 - Kaznena ekspedicija
Zagor LIB KB 049 - Kaznena ekspedicijaStripovizijacom
 
Мистецтво Стародавньої Греції та Стародавнього Риму
Мистецтво Стародавньої   Греції   та Стародавнього РимуМистецтво Стародавньої   Греції   та Стародавнього Риму
Мистецтво Стародавньої Греції та Стародавнього Римуhome
 
Dylan dog 14 izmedju zivota i smrti
Dylan dog 14 izmedju zivota i smrtiDylan dog 14 izmedju zivota i smrti
Dylan dog 14 izmedju zivota i smrtiSinisa Savicevic
 
фінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptxфінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptxssuserde75c6
 

Mais procurados (20)

Моніторинг адаптації здобувачів освіти 1.6
Моніторинг адаптації здобувачів освіти  1.6Моніторинг адаптації здобувачів освіти  1.6
Моніторинг адаптації здобувачів освіти 1.6
 
Novruz el bayramıdır
Novruz el bayramıdırNovruz el bayramıdır
Novruz el bayramıdır
 
Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...
Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...
Урок 14 для 1 класу - Письмо - З’єднувальні лінії (верхнє, середнє і нижнє з’...
 
1.8 навички читання вголос учнів 21-22 довідка.pdf
1.8 навички читання вголос учнів 21-22 довідка.pdf1.8 навички читання вголос учнів 21-22 довідка.pdf
1.8 навички читання вголос учнів 21-22 довідка.pdf
 
Мистецтво живого слова
Мистецтво живого словаМистецтво живого слова
Мистецтво живого слова
 
українська мова. прикметник.
українська мова. прикметник. українська мова. прикметник.
українська мова. прикметник.
 
Zagor L 288 - Povratak Crnih vukova
Zagor L 288 - Povratak Crnih vukovaZagor L 288 - Povratak Crnih vukova
Zagor L 288 - Povratak Crnih vukova
 
ZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJU
ZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJUZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJU
ZS DILAN DOG - 024 - RUZICASTI ZECEVI UBIJAJU
 
Й.Я.Ривкінд. Особливості роботи за підручником «Сходинки до інформатики. 2 кл...
Й.Я.Ривкінд. Особливості роботи за підручником «Сходинки до інформатики. 2 кл...Й.Я.Ривкінд. Особливості роботи за підручником «Сходинки до інформатики. 2 кл...
Й.Я.Ривкінд. Особливості роботи за підручником «Сходинки до інформатики. 2 кл...
 
Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...
Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...
Урок 15 для 7 класу - Моделі. Етапи побудови моделей. Реалізація математичних...
 
Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)
Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)
Monthly Khazina-e-Ruhaniyaat Aug'21 (Vol.12, Issue 4)
 
Федієнко В. Цікава математика
Федієнко В. Цікава математикаФедієнко В. Цікава математика
Федієнко В. Цікава математика
 
Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)
Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)
Monthly Khazina-e-Ruhaniyaat Sep'21 (Vol.12, Issue 5)
 
سنت حبیب ﷺ.pdf
سنت حبیب ﷺ.pdfسنت حبیب ﷺ.pdf
سنت حبیب ﷺ.pdf
 
презентація елемент керування кнопка
презентація   елемент керування кнопкапрезентація   елемент керування кнопка
презентація елемент керування кнопка
 
Zagor LIB KB 049 - Kaznena ekspedicija
Zagor LIB KB 049 - Kaznena ekspedicijaZagor LIB KB 049 - Kaznena ekspedicija
Zagor LIB KB 049 - Kaznena ekspedicija
 
Мистецтво Стародавньої Греції та Стародавнього Риму
Мистецтво Стародавньої   Греції   та Стародавнього РимуМистецтво Стародавньої   Греції   та Стародавнього Риму
Мистецтво Стародавньої Греції та Стародавнього Риму
 
Dylan dog 14 izmedju zivota i smrti
Dylan dog 14 izmedju zivota i smrtiDylan dog 14 izmedju zivota i smrti
Dylan dog 14 izmedju zivota i smrti
 
фінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptxфінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptx
 
Tex vc 054 - Troclana banda
Tex vc 054 - Troclana bandaTex vc 054 - Troclana banda
Tex vc 054 - Troclana banda
 

Destaque

Збираю фронтенд на Brunch і чудово себе почуваю
Збираю фронтенд на Brunch і чудово себе почуваюЗбираю фронтенд на Brunch і чудово себе почуваю
Збираю фронтенд на Brunch і чудово себе почуваюStfalcon Meetups
 
Перевірка і оптимізація верстки
Перевірка і оптимізація версткиПеревірка і оптимізація верстки
Перевірка і оптимізація версткиStfalcon Meetups
 
Stakeholders and expectations, або коли проекти успішні?
Stakeholders and expectations, або коли проекти успішні?Stakeholders and expectations, або коли проекти успішні?
Stakeholders and expectations, або коли проекти успішні?Stfalcon Meetups
 
Природа организационных изминений
Природа организационных изминенийПрирода организационных изминений
Природа организационных изминенийStfalcon Meetups
 
Прозрачность: что выделяет отличного менеджера среди хороших
Прозрачность: что выделяет отличного менеджера среди хорошихПрозрачность: что выделяет отличного менеджера среди хороших
Прозрачность: что выделяет отличного менеджера среди хорошихStfalcon Meetups
 
M3.0 Leadership Path Agenda
M3.0 Leadership Path AgendaM3.0 Leadership Path Agenda
M3.0 Leadership Path AgendaAlexey Pikulev
 
In Team We Trust: How to grow Trust in Agile teams.
In Team We Trust:  How to grow Trust in Agile teams.In Team We Trust:  How to grow Trust in Agile teams.
In Team We Trust: How to grow Trust in Agile teams.Alexey Pikulev
 
Team trust canvas (RUS)
Team trust canvas (RUS)Team trust canvas (RUS)
Team trust canvas (RUS)Alexey Pikulev
 
Презентация Анны Вахитовой
Презентация Анны ВахитовойПрезентация Анны Вахитовой
Презентация Анны ВахитовойNataly Nikitina
 
Kanban vs Scrum – чьё кунг-фу сильнее
Kanban vs Scrum – чьё кунг-фу сильнееKanban vs Scrum – чьё кунг-фу сильнее
Kanban vs Scrum – чьё кунг-фу сильнееKirill Klimov
 
Kanban at Yandex Images (Agile Days 2013)
Kanban at Yandex Images (Agile Days 2013)Kanban at Yandex Images (Agile Days 2013)
Kanban at Yandex Images (Agile Days 2013)Yandex
 
Scrum-Kanban-Scrumban
Scrum-Kanban-ScrumbanScrum-Kanban-Scrumban
Scrum-Kanban-ScrumbanAlexey Korsun
 
Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?Fedor Malyshkin
 
Agile/Scrum методологии разработки программного обеспечения
Agile/Scrum методологии разработки программного обеспеченияAgile/Scrum методологии разработки программного обеспечения
Agile/Scrum методологии разработки программного обеспеченияjazzteam
 
Agile: Что это такое и какая от него польза
Agile: Что это такое и какая от него пользаAgile: Что это такое и какая от него польза
Agile: Что это такое и какая от него пользаIvano Digital
 
Контент в SMM (Контент для продвижения в социальных сетях)
Контент в SMM (Контент для продвижения в социальных сетях)Контент в SMM (Контент для продвижения в социальных сетях)
Контент в SMM (Контент для продвижения в социальных сетях)Olena Rodiontseva
 

Destaque (17)

Збираю фронтенд на Brunch і чудово себе почуваю
Збираю фронтенд на Brunch і чудово себе почуваюЗбираю фронтенд на Brunch і чудово себе почуваю
Збираю фронтенд на Brunch і чудово себе почуваю
 
Перевірка і оптимізація верстки
Перевірка і оптимізація версткиПеревірка і оптимізація верстки
Перевірка і оптимізація верстки
 
Stakeholders and expectations, або коли проекти успішні?
Stakeholders and expectations, або коли проекти успішні?Stakeholders and expectations, або коли проекти успішні?
Stakeholders and expectations, або коли проекти успішні?
 
Природа организационных изминений
Природа организационных изминенийПрирода организационных изминений
Природа организационных изминений
 
Прозрачность: что выделяет отличного менеджера среди хороших
Прозрачность: что выделяет отличного менеджера среди хорошихПрозрачность: что выделяет отличного менеджера среди хороших
Прозрачность: что выделяет отличного менеджера среди хороших
 
M3.0 Leadership Path Agenda
M3.0 Leadership Path AgendaM3.0 Leadership Path Agenda
M3.0 Leadership Path Agenda
 
In Team We Trust: How to grow Trust in Agile teams.
In Team We Trust:  How to grow Trust in Agile teams.In Team We Trust:  How to grow Trust in Agile teams.
In Team We Trust: How to grow Trust in Agile teams.
 
Team trust canvas (RUS)
Team trust canvas (RUS)Team trust canvas (RUS)
Team trust canvas (RUS)
 
Презентация Анны Вахитовой
Презентация Анны ВахитовойПрезентация Анны Вахитовой
Презентация Анны Вахитовой
 
Kanban vs Scrum – чьё кунг-фу сильнее
Kanban vs Scrum – чьё кунг-фу сильнееKanban vs Scrum – чьё кунг-фу сильнее
Kanban vs Scrum – чьё кунг-фу сильнее
 
Kanban at Yandex Images (Agile Days 2013)
Kanban at Yandex Images (Agile Days 2013)Kanban at Yandex Images (Agile Days 2013)
Kanban at Yandex Images (Agile Days 2013)
 
Scrum-Kanban-Scrumban
Scrum-Kanban-ScrumbanScrum-Kanban-Scrumban
Scrum-Kanban-Scrumban
 
Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?
 
Как работает KANBAN
Как работает KANBANКак работает KANBAN
Как работает KANBAN
 
Agile/Scrum методологии разработки программного обеспечения
Agile/Scrum методологии разработки программного обеспеченияAgile/Scrum методологии разработки программного обеспечения
Agile/Scrum методологии разработки программного обеспечения
 
Agile: Что это такое и какая от него польза
Agile: Что это такое и какая от него пользаAgile: Что это такое и какая от него польза
Agile: Что это такое и какая от него польза
 
Контент в SMM (Контент для продвижения в социальных сетях)
Контент в SMM (Контент для продвижения в социальных сетях)Контент в SMM (Контент для продвижения в социальных сетях)
Контент в SMM (Контент для продвижения в социальных сетях)
 

Semelhante a CSS по БЕМ

WordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting themeWordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting themeTrilipuT
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиОлексій Артеменко
 
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)Drupaltour
 
Layouts vs Templates - Sergey Borodylin
Layouts vs Templates - Sergey BorodylinLayouts vs Templates - Sergey Borodylin
Layouts vs Templates - Sergey BorodylinDrupalCamp Kyiv
 
Лекція #04. Основи блочної верстки
Лекція #04. Основи блочної версткиЛекція #04. Основи блочної верстки
Лекція #04. Основи блочної версткиAlex Slobodyanyuk
 
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковJoomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковIgor Bronovskyy
 
Методології Front end
Методології Front endМетодології Front end
Методології Front endWeb Systems
 
Html мова розмітки гіпертекстового документу
Html  мова розмітки гіпертекстового документуHtml  мова розмітки гіпертекстового документу
Html мова розмітки гіпертекстового документуzaykoannaivanivna
 
O.Posyniak - UI Components
O.Posyniak - UI ComponentsO.Posyniak - UI Components
O.Posyniak - UI ComponentsOleg Posyniak
 
Випускна робота Лемеш
Випускна робота ЛемешВипускна робота Лемеш
Випускна робота Лемешvitaliy_galata
 
Website on WordPress. HTML/CSS/JavaScript
Website on WordPress. HTML/CSS/JavaScriptWebsite on WordPress. HTML/CSS/JavaScript
Website on WordPress. HTML/CSS/JavaScriptIvan Bilinskiy
 

Semelhante a CSS по БЕМ (20)

ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
23
2323
23
 
WordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting themeWordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting theme
 
Drupal Optimization
Drupal OptimizationDrupal Optimization
Drupal Optimization
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапи
 
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
 
Layouts vs Templates - Sergey Borodylin
Layouts vs Templates - Sergey BorodylinLayouts vs Templates - Sergey Borodylin
Layouts vs Templates - Sergey Borodylin
 
Лекція #04. Основи блочної верстки
Лекція #04. Основи блочної версткиЛекція #04. Основи блочної верстки
Лекція #04. Основи блочної верстки
 
Theme24-jQuery
Theme24-jQueryTheme24-jQuery
Theme24-jQuery
 
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковJoomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
 
Методології Front end
Методології Front endМетодології Front end
Методології Front end
 
основи веб дизайну розділ 2 1
основи веб дизайну розділ 2 1основи веб дизайну розділ 2 1
основи веб дизайну розділ 2 1
 
Twig in symfony
Twig in symfonyTwig in symfony
Twig in symfony
 
3
33
3
 
Html мова розмітки гіпертекстового документу
Html  мова розмітки гіпертекстового документуHtml  мова розмітки гіпертекстового документу
Html мова розмітки гіпертекстового документу
 
6 klas
6 klas 6 klas
6 klas
 
57,23.pdf
57,23.pdf57,23.pdf
57,23.pdf
 
O.Posyniak - UI Components
O.Posyniak - UI ComponentsO.Posyniak - UI Components
O.Posyniak - UI Components
 
Випускна робота Лемеш
Випускна робота ЛемешВипускна робота Лемеш
Випускна робота Лемеш
 
Website on WordPress. HTML/CSS/JavaScript
Website on WordPress. HTML/CSS/JavaScriptWebsite on WordPress. HTML/CSS/JavaScript
Website on WordPress. HTML/CSS/JavaScript
 

Mais de Stfalcon Meetups

Conversion centered design 3
Conversion centered design 3Conversion centered design 3
Conversion centered design 3Stfalcon Meetups
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
Design of the_future_30_05_2019
Design of the_future_30_05_2019Design of the_future_30_05_2019
Design of the_future_30_05_2019Stfalcon Meetups
 
Global sales - a few insights
Global sales - a few insightsGlobal sales - a few insights
Global sales - a few insightsStfalcon Meetups
 
How to build your own startup
How to build your own startupHow to build your own startup
How to build your own startupStfalcon Meetups
 
Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Stfalcon Meetups
 
Парнерство нидерланды
Парнерство нидерландыПарнерство нидерланды
Парнерство нидерландыStfalcon Meetups
 
Риси гарного менеджера
Риси гарного менеджераРиси гарного менеджера
Риси гарного менеджераStfalcon Meetups
 
Между заказчиком и разработчиком
Между заказчиком и разработчикомМежду заказчиком и разработчиком
Между заказчиком и разработчикомStfalcon Meetups
 
майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”Stfalcon Meetups
 
Kubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDKubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDStfalcon Meetups
 

Mais de Stfalcon Meetups (20)

Conversion centered design 3
Conversion centered design 3Conversion centered design 3
Conversion centered design 3
 
Discovery phase
Discovery phaseDiscovery phase
Discovery phase
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020
 
Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11
 
Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11
 
Design of the_future_30_05_2019
Design of the_future_30_05_2019Design of the_future_30_05_2019
Design of the_future_30_05_2019
 
2 5404811386729530203
2 54048113867295302032 5404811386729530203
2 5404811386729530203
 
Team evolution
Team evolutionTeam evolution
Team evolution
 
Mobile&Privacy
Mobile&PrivacyMobile&Privacy
Mobile&Privacy
 
Global sales - a few insights
Global sales - a few insightsGlobal sales - a few insights
Global sales - a few insights
 
How to build your own startup
How to build your own startupHow to build your own startup
How to build your own startup
 
Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом
 
Парнерство нидерланды
Парнерство нидерландыПарнерство нидерланды
Парнерство нидерланды
 
Риси гарного менеджера
Риси гарного менеджераРиси гарного менеджера
Риси гарного менеджера
 
Между заказчиком и разработчиком
Между заказчиком и разработчикомМежду заказчиком и разработчиком
Между заказчиком и разработчиком
 
Cv vs resume
Cv vs resumeCv vs resume
Cv vs resume
 
Vue.js
Vue.jsVue.js
Vue.js
 
майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”
 
Kubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDKubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CD
 

Último

Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdfhome
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxOlgaDidenko6
 
оцінювання дітей з особливими освітніми потребами у ЗЗСО.pptx
оцінювання дітей з особливими освітніми потребами у ЗЗСО.pptxоцінювання дітей з особливими освітніми потребами у ЗЗСО.pptx
оцінювання дітей з особливими освітніми потребами у ЗЗСО.pptxbagniylarisa15
 
Роль українців у перемозі в Другій світовій війні
Роль українців у перемозі в Другій світовій війніРоль українців у перемозі в Другій світовій війні
Роль українців у перемозі в Другій світовій війніestet13
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptOlgaDidenko6
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняtetiana1958
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfhome
 
аналептики та антидепресанти.шгшгпшгп.ppt
аналептики та антидепресанти.шгшгпшгп.pptаналептики та антидепресанти.шгшгпшгп.ppt
аналептики та антидепресанти.шгшгпшгп.pptJurgenstiX
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxOlgaDidenko6
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxOlgaDidenko6
 
Балади про Робіна Гуда. Аналіз образу Робіна Гуда
Балади про Робіна Гуда. Аналіз образу Робіна ГудаБалади про Робіна Гуда. Аналіз образу Робіна Гуда
Балади про Робіна Гуда. Аналіз образу Робіна ГудаAdriana Himinets
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxOlgaDidenko6
 
Відкрита лекція на тему: "Сидерати - як спосіб виживання"
Відкрита лекція на тему: "Сидерати - як спосіб виживання"Відкрита лекція на тему: "Сидерати - як спосіб виживання"
Відкрита лекція на тему: "Сидерати - як спосіб виживання"tetiana1958
 

Último (14)

Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdf
 
Defectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptxDefectolog_presentation_for_website.pptx
Defectolog_presentation_for_website.pptx
 
оцінювання дітей з особливими освітніми потребами у ЗЗСО.pptx
оцінювання дітей з особливими освітніми потребами у ЗЗСО.pptxоцінювання дітей з особливими освітніми потребами у ЗЗСО.pptx
оцінювання дітей з особливими освітніми потребами у ЗЗСО.pptx
 
Роль українців у перемозі в Другій світовій війні
Роль українців у перемозі в Другій світовій війніРоль українців у перемозі в Другій світовій війні
Роль українців у перемозі в Другій світовій війні
 
psychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.pptpsychologistpresentation-230215175859-50bdd6ed.ppt
psychologistpresentation-230215175859-50bdd6ed.ppt
 
Проблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішенняПроблеми захисту лісу в Україні та шляхи вирішення
Проблеми захисту лісу в Україні та шляхи вирішення
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
 
аналептики та антидепресанти.шгшгпшгп.ppt
аналептики та антидепресанти.шгшгпшгп.pptаналептики та антидепресанти.шгшгпшгп.ppt
аналептики та антидепресанти.шгшгпшгп.ppt
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
Габон
ГабонГабон
Габон
 
Горбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptxГорбонос 2024_presentation_for_website.pptx
Горбонос 2024_presentation_for_website.pptx
 
Балади про Робіна Гуда. Аналіз образу Робіна Гуда
Балади про Робіна Гуда. Аналіз образу Робіна ГудаБалади про Робіна Гуда. Аналіз образу Робіна Гуда
Балади про Робіна Гуда. Аналіз образу Робіна Гуда
 
Супрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptxСупрун презентація_presentation_for_website.pptx
Супрун презентація_presentation_for_website.pptx
 
Відкрита лекція на тему: "Сидерати - як спосіб виживання"
Відкрита лекція на тему: "Сидерати - як спосіб виживання"Відкрита лекція на тему: "Сидерати - як спосіб виживання"
Відкрита лекція на тему: "Сидерати - як спосіб виживання"
 

CSS по БЕМ

  • 2. CSS до БЕМ #header div span a {...} .content .container div span p {...} .wrapper form .line input {...} div.footer.black ul li span {...} .main-content div div a {...} footer div > div p a.button {...} 01. 02. 03. 04. 05. 06. 2
  • 3. 3
  • 4. БЕМ (Блок, Елемент, Модифікатор) — методологія, яка забезпечує компонентний підхід до веб-розробки. В її основі лежить принцип розділу інтерфейсу на незалежні блоки. Це дозволяє легко і швидко розробляти інтерфейси будь-якої складності і повторно використовувати існуючий код. 4
  • 5. Блок Логічно і функціонально абсолютно незалежний компонент сторінки, який є самодостатнім і може бути використаний в будь-якому місці проекту, при цьому не втрачаючи свого смислу. 5
  • 6. Особливості блоку 1. Назва повинна характерезувати смисл блоку, а не його стан. 2. Блок не повинен впливати на своє оточення (відступи, позиціонування). 6
  • 7. Приклад блоку <!-- Правильно. Семантично осмислений блок 'logo'--> <div class="logo"></div> <!-- Неправильно. Описано зовнішній вигляд --> <div class="top-big-logo"></div> 7
  • 8. Принцип роботи з блоками Вкладеність 1. Блоки можна вкладати один в одного. 2. Дозволяється будь-яка вкладеність блоків. 8
  • 9. <header class="header"> <nav class="menu"> </nav> </header> HTML реалізація блоків <div class="logo"></div> <ul class="submenu"></ul> <div class="search"></div> 01. 02. 03. 04. 05. 06. 07. 9
  • 10. CSS реалізація блоків <!-- Правильно. Всі блоки абсолютно незалежні. Можуть бути використані у будь-якому місці проекту.--> .header {...} .logo {...} .menu {...} .submenu {...} .search {...} 01. 02. 03. 04. 05. 10
  • 11. CSS реалізація блоків <!-- Неправильно. Блоки залежні від своїх батьків і не можуть бути використаними без них.--> .header .logo {...} .header .menu {...} .header .menu .submenu {...} .header .search {...} 01. 02. 03. 04. 11
  • 12. Елемент Частина блоку, яка зв'язана з ним по смислу і функціонально. Елемент не може використовуватись без блоку до якого відноситься. 12
  • 13. Особливості елементу 1. Назва повинна характерезувати смисл елементу, а не його стан. 2. Ім'я елементу відділяється від імені блоку двома підресленнями. 13
  • 14. <div class="product"> </div> Приклад елементів <img class="product__picture"> <h4 class="product__name"></h4> <span class="product__price"></span> <button class="product__order"></button> 01. 02. 03. 04. 05. 06. 14
  • 15. Принципи роботи з елементами 1. Вкладеність 2. Належність 3. Необов'язковість 15
  • 16. Вкладеність елементів 1. Елементи можна вкладати один в одного. 2. Дозволяється будь-яка вкладеність елементів. 3. Елемент - це завжди частина блоку, тобто він не може бути частиною іншого елементу. 16
  • 17. <div class="product"> <div class="product__info"> </div> <div class="product__action"> </div> </div> HTML реалізація елементів <!-- Правильно. Структура назви елементів відповідає схемі: 'block-name__element-name'--> <img class="product__picture"> <h4 class="product__name"></h4> <span class="product__price"></span> <a href="#" class="product__view"></a> <button class="product__order"></button> 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 17
  • 18. CSS реалізація елементів <!-- Правильно. Елементи знаходяться на одному рівні.--> .product {...} .product__picture {...} .product__info {...} .product__name {...} .product__price {...} .product__action {...} .product__view {...} .product__order {...} Це дозволяє змінювати DOM-структуру без внесення змін в коді кожного окремого елементу. 01. 02. 03. 04. 05. 06. 07. 08. 18
  • 19. CSS реалізація елементів <!-- Неправильно. Присутній каскад для елементів.--> .product {...} .product__picture {...} .product__info .product__name {...} .product__info .product__price {...} .product__action {...} .product__action .product__view {...} .product__action .product__order {...} 01. 02. 03. 04. 05. 06. 07. 19
  • 20. <div class="product"> <div class="product__info"> </div> <div class="product__action"> </div> </div> HTML реалізація елементів <!-- Неправильно. Структура назви елементів не відповідає схемі: 'block-name__element-name'--> <img class="product__picture"> <h4 class="product__info__name"></h4> <span class="product__info__price"></span> <a href="#" class="product__action__view"></a> <button class="product__action__order"></button> 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 20
  • 21. <div class="product"> <div class="product__info"> </div> <div class="product__action"> </div> </div> <!-- Неправильно. Структура назви елементів не відповідає схемі: 'block-name__element-name'--> <img class="product__picture"> <h4 class="product__info__name"></h4> <span class="product__info__description"></span> <span class="product__info__price"> <span class="product__info__price__old"></span> <span class="product__info__price__new"></span> </span> <a href="#" class="product__action__view"></a> <button class="product__action__order"></button> 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 21
  • 22. Належність елементів Елемент - це завжди частина блоку, він не повинен використовуватись окремо від нього. 22
  • 23. <div class="product"> </div> HTML реалізація <!-- Правильно. Елементи лежать всередині блоку 'product'.--> <img class="product__picture"> <h4 class="product__name"></h4> <span class="product__price"></span> <button class="product__order"></button> 01. 02. 03. 04. 05. 06. 23
  • 24. <div class="product"> </div> HTML реалізація <!-- Неправильно. Елементи лежать поза блоком 'product'.--> <span class="product__price"></span> <button class="product__order"></button> <img class="product__picture"> <h4 class="product__name"></h4> 01. 02. 03. 04. 05. 06. 24
  • 25. <footer class="footer"> </div> Необов'язковість елементів Елемент - необов'язкова частина блоку. Не у всіх блоків, повинні бути елементи. Наприклад: <nav class="menu"></nav> <ul class="social"></ul> 01. 02. 03. 04. 25
  • 26. Це блок чи елемент? 26
  • 27. <div class="product"> </div> Можна легко змінити елемент на блок або навпаки <img class="illustration product__picture"> <h4 class="product__name"></h4> <span class="product__price"></span> <button class="product__order"></button> 01. 02. 03. 04. 05. 06. 27
  • 28. Модифікатор Сутність, яка визначає зовнішній вигляд, стан або поведінку блоку чи елементу і не може бути викорстана окремо від них. Модифікатор має ім'я і може мати значення. У блоку або елементу, може бути декілька модифікаторів одночасно. 28
  • 29. Особливості модифікаторів 1. Назва повинна характерезувати зовнішній вигляд, стан, або поведінку. 2. Ім'я модифікатора відділяється від імені блоку чи елементу одним підкресленням. 29
  • 30. Типи модифікаторів 1. Булевий 2. Ключ-значення <!-- Блок 'button' має булевий модифікатор 'disabled'--> <button class="button button_disabled"></button> <!-- Блок 'button' має модифікатор 'size' зі значенням 's'--> <button class="button button_size_s"></button> 30
  • 31. Префікси 1. b- (block) - для позначення звичайного блоку. 2. h- (holster) - для задавання відступів групі блоків. 3. l- (layout) - для розташування інших блоків. 4. g- (global) - для глобальних модифікаторів. 5. js- (JavaScript) - для блоків, які використовують JavaScript. 6. ... <!-- Приклад використання префіксів --> <div class="b-button"></div> <div class="g-clearfix"></div> З розвитком БЕМ, Яндекс відмовився від префіксів. 31
  • 32. Мікс Це прийом, який дозволяє використовувати різні БЕМ-сутності на одному DOM-вузлі. 32
  • 33. Мікси дозволяють 1. Поєднувати поведінку і стилі декількох сутностей без дублювання коду. 2. Створювати семантично нові компоненти інтерфейсу на основі тих, які вже є. 33
  • 34. header__logo header__menu header__search HTML реалізація міксів <header class="header"> <div class="logo "></div> <nav class="menu "> <ul class="submenu"></ul> </nav> <div class="search "></div> </header> 01. 02. 03. 04. 05. 06. 07. 34
  • 35. CSS реалізація міксів .header {...} .header__logo {зовнішня геометрія, позиціювання} .header__menu {зовнішня геометрія, позиціювання} .header__search {зовнішня геометрія, позиціювання} .logo {...} .menu {...} .submenu {...} .search {...} 01. 02. 03. 04. 05. 06. 07. 08. 35
  • 36. БЕМ і препроцесори .product { &__picture {...} &__info {...} &__name {...} &__price {...} &__action {...} &__view {...} &__order {...} } 36
  • 37. БЕМ і CSS-каскад Основний принцип БЕМ — незалежні блоки. Вкладені селектори збільшують зв'язаність коду і роблять його повторне використання неможливим. Каскад не забороняється, але не рекомендується. 37
  • 38. Наприклад, можна використати вкладеність для зміни теми елементів блоку: .nav {...} .nav_theme_light .nav__item {'зміна теми пунктів меню'} .nav__item {...} або коли потрібно вивести тест з WYSIWYG: .text h2 {...} .text p {...} .text ul li {...} 38
  • 39. Які переваги надає БЕМ • Незалежні блоки • Семантика • Відсутність колізій • Структурованість коду • Масштабування • Зменшується час на розробку та підтримку проекту • Поріг входу на проект мінімальний 39
  • 40. Як перейти на CSS по БЕМ • Не використовувати id та теги для селекторів • Абстрагуватись від DOM-моделі і навчитись створювати блоки • Мінімізувати кількість вкладених селекторів • Використовувати правила по іменуванню CSS-класів • Використовувати мікси • Повторно використовувати блоки 40
  • 41. Чому не можна використовувати теги або тег і клас для селекторів <a class="button button_active"></a> a.button {...} a.button_active {...} З розвитком проекту можуть з'явитись блоки input.button, span.button, button.button 41
  • 42. 42