Назад к вопросам
Junior
172
questionbank
Как достигается изоляция при использовании методологии БЭМ?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
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 для одного блока не конфликтуют с правилами для другого, даже если они содержат элементы с похожими названиями. Это облегчает разработку, поддержку и повторное использование компонентов.