Перейти до основного вмісту

Мікс

Мікси (міксування, суміш) - комбінування декількох класів блоку та елемента в одному тезі. Тобто це можливість зробити один блок елементом іншого блоку. Такий підхід дозволяє додати деякі стилі, наприклад зовнішню геометрію або позиціонування, необхідні тільки у певному місці.

<header class="page-header">
<a class="logo" href="">Технокряк</a>
<ul class="nav">
...
</ul>
</header>

<footer class="page-footer">
<a class="logo" href="">Технокряк</a>
</footer>

Наприклад, для блоку logo, тільки всередині блоку page-header, необхідний зовнішній правий відступ 50px, щоб відсунути навігацію. Можна створити клас-модифікатор logo--header або logo--margin-right, але виглядає це вкрай сумнівно, особливо імена класів. Клас-модифікатор використовується для зміни зовнішнього вигляду або поведінки блоку, а не для встановлення йому зовнішньої геометрії.

У таких ситуаціях використовуються мікси. Ім'я класу складається з імен блоку батька і блоку нащадка за схемою батько__нащадок. Зробимо блок logo елементом блоку page-header, додавши ще один клас-мікс page-header__logo.

<header class="page-header">
<!-- Це і є мікс. В цьому місці блок logo став ще й елементом page-header -->
<a class="logo page-header__logo" href="">Технокряк</a>
<ul class="nav">
...
</ul>
</header>

<footer class="page-footer">
<a class="logo" href="">Технокряк</a>
</footer>

Клас logo буде містити всі базові стилі, а цьому класові точково задаємо зовнішню геометрію логотипу в шапці.

.page-header__logo {
margin-right: 50px;
}