Возможно многие из вас уже пишут по БЭМу, просто не догадываются об этом, ведь БЭМ на самом деле не требует даже классов вида .block__element, срыв покровов в блице.
Web Standards Days
Kyiv
28 ноября 2015
#wstdays
https://wsd.events/2015/11/28/
Видео: https://www.youtube.com/watch?v=_Sx5jvT0qEU&t=2h22m00s
Слайды: http://bit.ly/bem-in-the-wild
1 of 77
Download to read offline
More Related Content
БЭМ в дикой природе
1. БЭМ в дикой природе
.block__el__el
.b-block
.block--mod
…
5. В исходниках этой презентации
спрятались подсказки!
В комментах html написаны тезисы доклада и комментарии к
слайдам требующим пояснений.
Презентация: bit.ly/bem-in-the-wild
5
9. В прошлом году мы обсуждали
ручную вёрстку по БЭМ…
Презентация:
bit.ly/bem-css-right
Видео доклада:
youtube.com/
watch?v=kBgHdSOj33A
Презентация содержит больше слайдов и примеров, чем
оригинальное видео.
9
11. — Мы используем БЭМ, но не FullStack, а #b_ в CSS.
— Нет, не как в Яндексе.
— Как?
— Ну как Гарри Робертс писал…
— Как именно, он разное писал?
— Fuck.
“
11
12. Each time we have to understand what exactly BEM we are talking
about. Both with customer and internally in the team.
Даже внутри специализированной рассылки слова
"они перешли на БЭМ!" могут означать что угодно.
2:45 PM - 20 Nov 2015
AAndrndreey Melikhoy Melikhovv
@amel_true
Follow
11 RETWEET 11 FAVORITE
ReplyRetweetFavorite
“
12
27. БЭМ пугал когда он вышел. Там была простыня
текста в документации на не очень прямом
английском про философию.
10:06 - 6 августа 2015
РРазрабоазработчиктчик
@jsunderhood
Читать
11 ТВИТ В ИЗБРАННОМ
ОтветитьРетвитнутьВ избранное
Что я имел ввиду - авторы БЭМ не смогли его
продать. В том числе из-за сложной и не очень
удобной документации, ИМХО.
10:06 - 6 августа 2015
РРазрабоазработчиктчик
@jsunderhood
Читать
11 РЕТВИТОВ 44 ТВИТОВ В ИЗБРАННОМ
ОтветитьРетвитнутьВ избранное
27
28. Даже разработчики Google Material Design не смогли с
первого раза правильно написать имена классов по БЭМ
:)
29. Диалекты БЭМ
БЭМ это фреймворк для создания фреймворков.
14:50 - 12 июля 2015 Ukraine, Ukraine
Vitaly HarisoVitaly Harisovv
@harisov
Читать
33 РЕТВИТОВ 11 ТВИТОВ В ИЗБРАННОМ
ОтветитьРетвитнутьВ избранное
35. BEViS
Диалект БЭМ, с более строгими правилами для максимальной
надежности верстки, придуманный Вадимом Макишвили для
Яндекс.Карт.
Нет миксов.
Нет модификаторов.
Есть состояния:
<div class="popup _orientation_top"></div>
<button class="button _pressed _focused"></div>
.button._pressed {}
01.
02.
03.
35
38. BEMIT: пространства имен
Продвинутое использование префиксов и суффиксов от Гарри
Робертса. Попытка описать взаимосвязь между независимыми
блоками с точки зрения SMACSS и OOCSS.
<div class="o-media@md c-user c-user--premium">
<img src=/slideshow/index-55660182/55660182/"" class="o-media__img@md c-user__photo" />
<p class="o-media__body@md c-user__bio">...</p>
</div>
01.
02.
03.
04.
38
41. БЁМ: шутка всерьез
БЭМ в котором можно писать как хочешь. Хоть с элементами
элементов.
.block__element__subelement
Теперь я использую БЁМ — это примерно как БЭМ, только вы
можете писать его как хотите, а не как укажет партия или
церковь. Ура!
Роман Комаров
“
41
45. Стиль Гарри Робертса
Многим нравится зарубежный формат модификаторов, через -- ,
он читабельней.
<a class="block-name__element-name --state_active ">
45
46. Стиль camelCase
А через camelCase – ещё читабельней!
<a class=" blockName__elementName --state_active">
46
47. Стиль без подчеркиваний
Некоторые идут ещё дальше и заменяют __ на - . camelCase
единственный гарантирует что вы поймете где блок, а где
элемент.
<a class=" blockName-elementName --state_active">
47
49. Сокращенные модификаторы
Зарубежом их назвали „Individual modifiers: a shorter syntax“. У
нас перевели как «Обособленные модификаторы: сокращенный
синтаксис». Яндекс в официальной документации называет их
«Стиль No-namespace».
<div class="blockName__elem -key_value ">
.blockName {
&__elem {
& .-key_value {
}
01.
02.
03.
04.
05.
49
51. -блоки
$(' .js- fancybox').fancybox();
Это миксование css-блока и js-блока на одной dom-ноде.
Канонический БЭМ считает, что они не нужны, т.к. js-функционал
нет смысла отделять от блока. Гарри Робертс и не-Яндекс
разработчики их активно используют и пропагандируют: т.к.
разделение позволяет легко копировать css-блок без связанного с
ним JS.
51
57. BEML
Препроцессор BEM для HTML через Grunt/Gulp
<div block="b-animals">
<div elem="cat" mod="size:big, color:red"></div>
</div>
01.
02.
03.
57
58. posthtml-bem
Препроцессор BEM для HTML через PostHTML.
Синтаксис почти такой же, но с отличиями!
<div block="MadTeaParty">
<div elem="march-hare" mods="type:mad">March Hare</div>
<div elem="march-hare" mods="mad">March Hare</div>
</div>
Please use "mods" for the attribute modifiers instead of "mod" and a
space as a separator of modifiers instead of a comma.
01.
02.
03.
04.
58
59. BEMto
Написание BEM в Jade.
+b.block1
+e.element1 Foo
+b.block2
+e('a')(href="#bar").element Bar
+e.element2 Baz
01.
02.
03.
04.
05.
59
60. Вы можете создавать свои
гайдлайны
БЭМ дает лишь базовый набор правил, конкретную реализацию и
синтаксис вы выбираете сами.
• Harry Roberts
• iDeus
• Artem Sapegin
• CodeRiver (Yuriy Artyukh, cssing.org.ua)
• AzaGroup
60
68. MCSS → BEM
Как автор MCSS, рекоммендую теперь уже использовать
именно БЭМ. С тех пор он стал менее строгим, и более
понятным. MCSS может пригодится только на очень большом,
монолитном проекте.
Роберт Харитонов
“
68
75. Читать дальше
• Cоветы от ведущих БЭМ-разработчиков: ошибки и best practices
• BEM Quick Start Guide — БЭМ: UnOfficial Team
• Мажорный релиз новой документации — БЭМ: Яндекс Team
• Full BEM Stack в HTML — Владимир Гриненко
• Классификация ошибок BEM CSS (со стр. 50) — Александр
Корецкий @n2j7
• Material Design Lite CSS — Google
• i-bem.js
• варианты использования префиксов от Гарри Робертса
• BEMIT — Harry Roberts
75
76. …и дальше
• что такое блок, префикс b- и что такое независимый блок
• контекстные блоки (темы) (раздел «Внутри контекстного блока»)
• layout-блоки и холдер-блоки
• как позиционировать БЭМ-блоки относительно друг друга
• абстрактные блоки (раздел „i-, от include“) и их реализация в
Sass через %extend-only-selector+extend или лучше через
mixin+include
• уровни переопределения (раздел «Модификация файлами») и
структура блоков на файловой системе
• глобальные модификаторы
76