Back to questions
Junior
210
questionbank
Как достигается изоляция при использовании методологии БЭМ?
Sobes Copilot
Get answers in real time
Answer from AI
sobes.tech AI
Изоляция достигается за счет уникальных классов для блоков, элементов и их модификаторов.
- Блок: Имеет уникальное имя класса, например,
button. Стили, примененные к классу блока, распространяются только на элементы внутри этого блока. - Элемент: Имеет имя класса, состоящее из имени блока, двух подчеркиваний и имени самого элемента, например,
button__text. Стили элемента привязаны к конкретному блоку и не влияют на элементы с тем же именем в другом блоке. - Модификатор: Имеет имя класса, состоящее из имени блока или элемента, двух дефисов (или одного подчеркивания, в зависимости от соглашения) и имени модификатора, например,
button--disabledилиbutton__text_bold. Модификатор добавляет или изменяет свойства существующего блока или элемента, не влияя на другие.
Пример структуры HTML:
<button class="button button--primary">
<span class="button__icon"></span>
<span class="button__text">Нажать</span>
</button>
<div class="card">
<h2 class="card__title">Заголовок</h2>
<p class="card__text">Текст карты</p>
</div>
Пример CSS:
.button {
/* Стили только для кнопки */
}
.button--primary {
/* Стили модификатора только для этой кнопки */
}
.button__icon {
/* Стили иконки только внутри .button */
}
.button__text {
/* Стили текста только внутри .button */
}
.card {
/* Стили только для карточки */
}
.card__title {
/* Стили заголовка только внутри .card */
}
.card__text {
/* Стили текста только внутри .card */
}
Благодаря такой номенклатуре и структуре стилей, правила CSS для одного блока не конфликтуют с правилами для другого, даже если они содержат элементы с похожими названиями. Это облегчает разработку, поддержку и повторное использование компонентов.