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

БЭМ-кнопки, как правильно?

Привет, начал разбираться с БЭМом и может я чего не понял, но назрел вопрос.

Есть кнопка .btn, которая в проекте очень много раз переиспользуется. Причем при переиспользовании кнопка может быть блочным или строчным элементом: div.btn, a.btn, button.btn… Соответсвенно возникают вопросы по использованию свойства display.

Например мне нужна кнопка-ссылка <a href="#" class="btn">go</a>, но нужна она мне в виде блока, т.е. нужно добавить display: block. Вопрос в том, куда мне нужно добавить это свойство, т.е. на каком уровне решать такие моменты? На уровне модификаторов для самой .btn или задавать display для элемента того блока в который вставляется эта кнопка(микс) <a href="#" class="btn parent-block__btn">? Есть ли какие-нибудь общие рекомендации для таких случаев или это все зависит от проекта?
  • Вопрос задан
  • 1678 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
werty1001
@werty1001
undefined
Кнопки в 99% случаев display: inline-block;, если нужно какую-то кнопку сделать во всю ширину, то лучшим решением будет сделать микс с элементом, модификатор на мой взгляд тут не нужен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Novamoscow
Как вариант на блок .btn повесить все повторяющие стили. а туда где применятся дисплей, применяйте отдельный класс и миксуйте с .btn.
Ответ написан
Комментировать
Steein
@Steein
Программист
Вам сюда там все подробнее описано!

<!-- Блок `search-form` -->
<form class="search-form">
    <!-- Элемент `input` блока `search-form` -->
    <input class="search-form__input">

    <!-- Элемент `button` блока `search-form` -->
    <button class="search-form__button">Найти</button>
</form>
Ответ написан
Комментировать
Если этот элемент может использоваться без блока, то указывать ".parent-block__btn" не надо, т.к. этот элемент не привязан к блоку, будет ".btn"

Если этот блок может иметь разные свойства (модификаторы), то создайте отдельные стили с этими различиями. ".btn .btn_div", ".btn .btn_a", ".btn .btn_button".
Ответ написан
Ваш ответ на вопрос

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

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