#html #css #bem
#HTML #css #bem
Вопрос:
Итак, у меня есть страница, подобная так:
<div class="dashboard">
<div class="dashboard-item">
<div class="dashboard-item__header">
<span class="dashboard-item__header__icon dashboard-item__header__icon--modifier"></span>Header Title
</div>
<div class="dashboard-item__content">
<p class="???"></p>
</div>
</div>
</div>
У меня есть панель мониторинга, которая является моим контейнером, и в ней могут быть разные элементы. Затем элемент имеет заголовок и некоторое содержимое, но этот элемент всегда будет на панели мониторинга. Итак, я действительно должен назвать это dashboard__item ?
Кроме того, как насчет вложенных элементов, таких как заголовок и содержимое? Должны ли они использовать название dashboard__item__header?
Я читал, что у нас не должно быть таких вложенных имен, но этот заголовок не должен существовать сам по себе, как и элемент панели мониторинга.
Итак, как я должен назвать такой случай?
И в содержимом, если у меня есть некоторые элементы, которые должны выглядеть по-другому, потому что они находятся внутри элемента панели мониторинга?
Ответ №1:
должен ли я действительно назвать это dashboard__item ?
Это зависит. Если все элементы внутри dashboard очень похожи и довольно просты, можно использовать элемент of dashboard
. Но если они разные или сложные, вы можете рассмотреть возможность создания отдельных блоков для каждого вида возможных элементов и, при необходимости, смешивать их с dashboard__item
целью позиционирования (см. https://en.bem.info/methodology/faq/#mixes ).
Должны ли они использовать название dashboard__item__header?
Нет, используйте что-то вроде dashboard__item-header
. See https://en.bem.info/methodology/faq/#why-does-bem-not-recommend-using-elements-within-elements-block__elem1__elem2
если у меня есть некоторые элементы, которые должны выглядеть по-другому, потому что они находятся внутри элемента панели мониторинга?
Смотрите вторую часть этого ответа https://en.bem.info/methodology/faq/#why-should-i-avoid-using-nested-selectors
PS: Вы задали 3 вопроса из нашего FAQ в одном сообщении! 😉