Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Почему правила именования BEM не использует теги и атрибуты?

#css #бэм


Как известно, BEM состоит из блоков, элементов и модификаторов.

Возьмем блоки. Их предлагают отмечать отдельным классом.

Крайне разнообразные Чем плох этот подход? Почему его не применяют? Мне кажется BEM идеально соответствует идеям обыкновенных тегов. Возможно я чего-то не знаю? Может быть возникают какие-то проблемы с селекторами?


Ответы

Ответ 1



Всё просто: совместимость. С ней пока всё очень ненадёжно, Custom Elements Specification всё ещё в статусе working draft, и браузерами поддерживается очень плохо. А до тех пор, пока этот стандарт не примут, HTML5, по сути, специфицирует белый список валидных элементов, вылезти за него значит нарушить стандарт. React лишь инкапсулирует конструкции из "примитивных элементов" (которые в HTML5 специфицированы) и позволяет составлять из них более сложные HTML-подобным языком разметки (JSX). Теоретически, для БЭМ такой препроцессор сделать тоже можно, и я не удивлюсь, если он всё же существует, просто малоизвестен. UPD: есть такой, posthtml, как сообщает @Guria, и в той же организации есть полифилл posthtml-custom-elements.

Ответ 2



БЭМ в том числе ориентировался на максимизацию производительности. Один класс - это очень быстро. Один тег - тоже. А вот атрибуты - это уже гораздо медленее. А так, по самой идеологии проблем не вижу. Ещё по поводу валидности разметки - кастомные теги должны содержать дефис.

Комментариев нет:

Отправить комментарий