Можно ли в БЭМ верстке подключать reset.css и применять символ * для сброса всех отступов?
Вычитал, что при верстке по БЭМ нельзя применять такие общие стили, как * { margin: 0; padding: 0; } и что нельзя подключать файл со сбрасыванием стилей, типа отмены подчеркивания ссылок, маркировки li в ul списках итд. Это действительно так?
Ответы (2 шт):
Да, это так. Вот что говорит документация к БЭМ
На блоки не должны влиять CSS-правила, созданные для всей страницы. Это нарушает их независимость и затрудняет повторное использование. Общий сброс стилей по сути реализуется с помощью глобальных CSS-правил, которые в большинстве случаев пишутся к селекторам на тег, что нежелательно делать в БЭМ-проекте.
Но ничего не мешает сбрасывать стили внутри каждого БЭМ блока.
reset.css вообще нельзя использовать это крайне неэффективный подход от которого только больше проблем.
А вот normalize.css неплохая практика, но в том случае если вы не полагаетесь на normalize, а описываете каждый блок полноценно, а normalize выступает в качестве базовой заглушки.
Объясню подробнее. normalize приводит к единому стилю дефолтные значения, которые каждый браузер назначает по своему и в случае, если вы не описали элемент, при использовании normalize вы получите адекватно форматированный контент, а в случае с reset.css это будет сплошной слитый в единую кашу текст, без видимых заголовков, параграфов, списков и т.д.. А еще с reset.css форматирование контента из админки приводит к полному фиаско, потому что многие кто его используют не понимают, что сайт это не сплошная статика.