Адаптивная сетка с использованием flexbox
09.09.2024

Рассмотрим пример создания сетки на примере сайта, в котором представлены карточки с товарами. Для верстки воспользуемся методологией BEM. Рассмотрим макет с типовой секцией, которая перечисляет карточку товаров «products».

Для базовых настроек и сброса стилей воспользуемся стилями из статьи №1.
Рассмотрим создание поэтапной адаптивной сетки. Базовый макет:
<body>
<header class="header">
<div class="container">
</div>
</header>
<main>
<section class="products">
<div class="container">
</div>
</section>
</main>
<footer></footer>
</body>
Создадим разметку компонента Card:
<div class="products__card card">
<div class="card__header">
<img class="card__image" src="./assets/product.png" alt="product"/>
</div>
<div class="card__body">
<p class="card__text card__text_description">Кресло с подлокотниками</p>
<div class="card__text card__text_price">5 000 ₽</div>
</div>
<div class="card__footer">
<button class="card__footer-btn">В корзину</button>
</div>
</div>
Для того, чтобы создать адаптивную сетку необходимо создать элементы div с классами «products__row» и «products__column», которые будут флексить -> реализовывать адаптивную сетку.
<section class="products">
<div class="container">
<div class="products__row">
<div class="products__column">
<div class="products__card card">
-//-
</div>
</div>
</div>
</div>
</section>
При создании файла стилей будем руководствоваться подходом mobi first.
Mobile First
Mobile First — это подход к созданию макетов, который использует CSS правила, ориентированные на маленькие экраны. Использование медиа запросовmin-width
.
CSS стили:
.products__row {
display: flex;
flex-wrap: wrap;
margin: 0 -4px;
}
.products__column {
flex: 0 0 auto;
width: calc(1 / 2 * 100%);
padding: 0px 4px 49px 0;
}
.products__card {
}
.card__header {
}
.card__image {
width: 100%;
height: 100%;
border-radius: 16px;
}
.card__body {
font-size: 12px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: c;
margin: 16px 0 18px 0;
}
.card__text {
margin: 0;
}
.card__text_description {
}
.card__text_price {
font-size: 16px;
}
.card__footer {
}
.card__footer-btn {
font-size: 12px;
width: 100%;
color: #9200b7;
text-align: center;
padding: 12px 24px;
border: 1px solid #9200b7;
border-radius: 32px;
}
@media (min-width: 768px) {
.products__row {
margin: 0 -5px;
}
.products__column {
width: calc(1 / 3 * 100%);
padding: 0px 5px 65px 0;
}
.card__body {
font-size: 16px;
}
.card__text_price {
font-size: 20px;
}
}
@media (min-width: 1024px) {
.products__row {
margin: 0 -8px;
}
.products__column {
width: calc(1 / 4 * 100%);
padding: 0px 8px 81px 0;
}
}

Предыдущие
Wazuh Dashboards plugins
Вам также может понравиться
