Задать вопрос
@Xenofit

НЕТ общему сбросу стилей в БЭМ! Что в замен?

Здравствуйте всем, по поводу БЭМ. Я только начинаю изучать веб, сейчас читаю информацию по БЭМ. На официальном сайте написано:

"Почему не стоит делать общий сброс стилей (reset)?
На блоки не должны влиять CSS-правила, созданные для всей страницы. Это нарушает их независимость и затрудняет повторное использование.

Общий сброс стилей по сути реализуется с помощью глобальных CSS-правил, которые в большинстве случаев пишутся к селекторам на тег, что нежелательно делать в БЭМ-проекте."

Вот и возникает вопрос а как быть тогда без reset и normalize? Даже html и body не сбросить? А как же ul-ки и т.д ? Погуглил, везде пишут почему не стоит использовать сброс при данной методологии, НО решения не предлагают. Как быть?
  • Вопрос задан
  • 1814 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 6
approximate_solution
@approximate_solution
JS Developer. Angular\React\Vue\Ember
В большинстве проектов используем - Normilize.css, без него никак. Плюс для body дефолтные стили с шрифтами, базовыми размерами и тд и тп.
Все это работает с коллаборация БЭМ.
Ответ написан
Комментировать
Realetive
@Realetive
MODX Ambassador России, самозванный БЭМ-евангелист
Cброс делается глобально не в одном файле, а точечно в тех блоках, где это необходимо (это позволяет переиспользовать блоки в разных проектах без неявной зависимости от упомянутых reset.css / normalize.css). Т. е. осознанно дублируя, например, box-sizing: border-box в блоках (элементах, модификаторах), где нам нужно повлиять на размер при использовании padding'ов, мы делаем Абсолютно Независимые Блоки (АНБ) без неявных зависимостей.

— Даже html и body не сбросить?


— Наоборот. Можно же сделать так:

<!-- index.html -->
<!DOCTYPE html>
<html>
  <body class="page">
    <!-- page content -->
  </body>
</html>


/* page.css */
html {
  padding: 0;
  margin: 0;
}

.page {
  padding: 0;
  margin: 0;
}


— А как же ul-ки и т.д?


— Аналогично:

<ul class="list">
  <li class="list__item">foo
  <li class="list__item">bar
</ul>


/* list.css */
.list {
  margin: 0;
  padding: 0;
  list-style-type: disc;
  list-style-position: inside;
}
Ответ написан
@burhanoff1992
Вопрос на самом деле странный.

Вот и возникает вопрос а как быть тогда без reset и normalize? Даже html и body не сбросить? А как же ul-ки и т.д ?


1. Ну почему без reset/normalize? они в очереди подключении должны стоять выше твоего основного файла стилей.

2. Тебе реально трудно прописать вручную нулевые отступы у body и ul? Держи:
body {
  margin: 0;
}

ul, ol {
  margin: 0;
  padding: 0;
  list-style-type: none;
}


3. Скоро ты встретишься с кучей других нюансов, что на их фоне этот вопрос будет смешным
Ответ написан
Комментировать
@YarosWD
Вот хорошая статья и видео на эту тему https://htmlacademy.ru/blog/useful/css/short-13
Ответ написан
Комментировать
Бред, что доказывает, что работа в топовой компании не сделает тебя гением программирования. У браузеров есть дефолтные стили, созданные для всей страницы, которые они применяют к каждому блоку, что нарушает их независимость и затрудняет повторное использование.
Ответ написан
@Xenofit Автор вопроса
Всем спасибо за ответы! Теперь примерно понял в каком направлении двигаться. Если подвести итог: 1)Пользоваться рекомендованными стилями от БЭМ из первого ответа.
2)Использовать normalize, НО с возможными правками исходя из проекта.
3)Прописать тот же (если так можно назвать) reset для body, html, ul и тп вручную в отдельном css файле.

Мне почему-то больше приглянулся первый вариант.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы