Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Tag selectors are fine, but they may come at a small performance penalty…
.option-environment__competition-factory--increase-factory
o-btn c-btn c-btn--positive qa-modal-acceptЭто позволяет создавать большую часть уникальных страниц без написания единой новой строчки CSS.
componentWillUnmount(), а также onclick="{json}" почти в точности повторяющий горячо любимые мной реактовские же this.props вызывают глубокое уважение.Нельзя голосовать (положительно!) за пользователей, у которых нет размещенных публикаций
CamelCase нотация для блоков радует глаз заядлых си-плюс-плюсщиков/яваскриптистов/рубистов«радует глаз» — так себе аргумент. Иногда привычки надо менять. Классы в css не чувствительны к регистру, а значит рано или поздно вы столкнётесь с проблемой конфликта идентификаторов отличающихся лишь регистром. Но не это самое страшное, а привычка к нечитаемой верблюжьей нотации: `ACMESubmitButton`, вместо более читаемой `acme-button-submit`.
Главное, что у блоков Box и Article не будет конфликтов даже если захотеть, и не придется ловить баги от того, что иногда модуль Article загружается раньше модуля Box и его стили получают другой приоритет.Конфликты будут на уровне элементов: `.Order .Button.is-submit` и `.ButtonGroup .Button.is-submit`. Проблема порядка подключения в случае bem легко решается сборщиком, отслеживающим зависимости в CSS.
.Article.is-new .Article-title { color: red }Банальный контрпример — дерево. Куча вложенных друг в друга одинаковых блоков и каждый пытается задать цвет для всех вложенных заголовков.
Большую часть наследуемых стилей возможно экранировать только с помощью жесткого переопределения всех этих стилей для каждого контейнера.Не надо экранировать то, что должно наследоваться. Например, блок не должен лезть со своим уставом (шрифтом) в чужой монастырь (страницу), а должен использовать те шрифты, что есть на странице. Но он может попросить шрифт «чуть-чуть по меньше» или подходящего его фону цвета.
Из статьи может показаться, что БЭМ появился в 2015 году
.Article.is-new { … }
Можно вернуть в ваш BEM немного CSS:.Article.is-new .Article-title { color: red }
.article--is-new .article-title { color: red }CamelCase нотация для блоков радует глаз заядлых си-плюс-плюсщиков/яваскриптистов/рубистов, а еще помогает никогда не путать блоки и элементы.
http-equiv, data-attribute в HTML, text-shadow, background-color в CSS). Консистентность.Ведь на одной ноде может быть несколько блоков или элементов.
Если следовать правилу «никогда не нарушать границы пространств имён» и каждому блоку выделять по отдельному элементу…
Однако стоит помнить, что такое переопределение в дальнейшем может принести множество проблем со specifity. Потому применять следует только в строго предписанных врачем количествах.
PS: в комментариях одновременно говорят о том, что смешивать БЭМ и JS — плохо, но что будущее за Web Components, где, как ни странно, компонент объединяет в себе стили, поведение и шаблоны. То самое чувство, когда https://lurkmore.co/взаимоисключающие%20параграфы
Это несколько иное.
рекомендации как-то противоречат здравому смыслу
которые используют верстку по БЭМ
Буду очень благодарен, если ткнете носом в непонятные моменты документации.
А вот пост в клуб БЭМ за 2009
Я примерно на каждом докладе рассказываю о том, как БЭМ уживается с любыми другими библиотеками
BEM с человеческим лицом