Секція товарів
Розберемо приклад створення секції зі стандартною сіткою карток, наприклад товарів інтернет-магазину.
Виділимо основні блоки (компоненти):
- Секція (клас section) - представляє довільний розділ з необов'язковим заголовком.
- Контейнер (клас container) - обгортка, яка задає ширину контенту і центрування.
- Сітка (клас grid) - відповідає за геометрію і розташування елементів.
- Картка товару (клас product) - компонент, що містить інформацію про продукт.
Блок section
До секції можна додати модифікатори кольору фону, залежно від теми, і багато іншого.
<section class="section">
  <!-- Необов'язковий заголовок, тег заголовка може бути довільний h1-h6 -->
  <h2 class="section__heading"></h2>
</section>
Блок container
Використовується не тільки в секціях, тому це окремий блок.
<section class="section">
  <!-- Блок container, обгортка контенту секції -->
  <div class="container">
    <h2 class="section__heading"></h2>
  </div>
</section>
Блок grid
У сітки є тільки один елемент - grid__item, він буде відповідати за фінальний
розмір картки товару і за відстань між картками. Тобто сітка і її елементи - це
flex-контейнер, який бере на себе завдання позиціонування будь-чого, наприклад
карток товару.
<section class="section">
  <div class="container">
    <h2 class="section__heading"></h2>
    <!-- Блок grid -->
    <ul class="grid">
      <li class="grid__item">...</li>
      <li class="grid__item">...</li>
      <li class="grid__item">...</li>
      ...
    </ul>
  </div>
</section>
Таку сітку можна буде використовувати повторно, особливо, якщо елементам зробити модифікатори кількості колонок, яку вони займають.
Блок product
Незалежний компонент, який може представляти будь-який продукт. Нехай картка товару складається із зображення, назви, ціни і кнопки «В кошик». Елементів може бути скільки завгодно, головне пам'ятати, що вони необов'язкові.
<article class="product">
  <img class="product__image" />
  <h2 class="product__name"></h2>
  <p class="product__price"></p>
  <button class="button" type="button"></button>
</article>
Зверніть увагу на тег button, його клас - це блок, а не елемент блоку product. Найчастіше дизайн кнопок в проекті однаковий, тому кнопка робиться окремим блоком і повторно використовується в інших компонентах. Для того, щоб задати їй додаткове позиціонування або зовнішню геометрію, достатньо додати мікс
product__button.
Все разом
Збираємо секцію товарів з готових компонентів, і додаємо оформлення.