10.1 Простая сетка
Flexbox позволяет создавать гибкие и адаптивные макеты. Сейчас мы рассмотрим несколько примеров использования Flexbox для создания различных макетов, включая простую сетку, центрирование элементов, создание навигационных меню и карточек товаров.
Создание простой сетки с использованием Flexbox. Этот пример демонстрирует, как можно легко создать равномерно распределенные элементы в контейнере.
Пример использования:
.flex-container {
display: flex;
flex-wrap: wrap; /* Позволяет элементам переноситься на новую строку */
background-color: lightgrey;
padding: 10px;
}
.flex-item {
background-color: deepskyblue;
margin: 10px;
padding: 20px;
color: white;
font-size: 20px;
flex: 1 1 calc(33.333% - 40px); /* Гибкое распределение пространства */
box-sizing: border-box;
}
<div class="flex-container">
<div class="flex-item">Item 1</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
<div class="flex-item">Item 4</div>
<div class="flex-item">Item 5</div>
<div class="flex-item">Item 6</div>
</div>
flex-basis: calc(33.333% - 40px): определяет начальный размер элемента перед тем, как будет применено любое растягивание или сжатие. В данном случае, элемент будет занимать 33.333% ширины контейнера минус 40 пикселей. calc() позволяет выполнять вычисления прямо в CSS.
10.2 Центрирование элементов
Центрирование элементов по горизонтали и вертикали в контейнере с использованием Flexbox.
Пример использования:
.flex-container {
display: flex;
justify-content: center; /* Центрирование по горизонтали */
align-items: center; /* Центрирование по вертикали */
height: 100vh; /* Высота контейнера на весь экран */
background-color: lightgrey;
}
.flex-item {
background-color: deepskyblue;
padding: 20px;
color: white;
font-size: 20px;
}
<div class="flex-container">
<div class="flex-item">Centered Item</div>
</div>
10.3 Навигационное меню
Создание горизонтального навигационного меню с использованием Flexbox.
Пример использования:
.nav-container {
display: flex;
justify-content: space-around; /* Распределение элементов с равными промежутками */
background-color: #333;
padding: 10px;
}
.nav-item {
color: white;
text-decoration: none;
padding: 10px 20px;
}
.nav-item:hover {
background-color: #575757;
}
<div class="nav-container">
<a href="#" class="nav-item">Home</a>
<a href="#" class="nav-item">About</a>
<a href="#" class="nav-item">Services</a>
<a href="#" class="nav-item">Contact</a>
</div>
10.4 Карточки товаров
Создание макета карточек товаров с использованием Flexbox.
Пример использования:
.product-list {
display: flex;
flex-wrap: wrap;
gap: 20px;
padding: 20px;
}
.product-item {
flex: 1 1 calc(33.333% - 40px);
border: 1px solid #ccc;
padding: 20px;
background-color: #fff;
text-align: center;
}
.product-item img {
max-width: 100%;
height: auto;
}
.product-title {
font-size: 1.2em;
margin: 10px 0;
}
.product-price {
font-size: 1.5em;
color: #e74c3c;
}
<div class="product-list">
<div class="product-item">
<img src="https://via.placeholder.com/150" alt="Product Image">
<h3 class="product-title">Товар 1</h3>
<p class="product-price">$99.99</p>
</div>
<div class="product-item">
<img src="https://via.placeholder.com/150" alt="Product Image">
<h3 class="product-title">Товар 2</h3>
<p class="product-price">$79.99</p>
</div>
<div class="product-item">
<img src="https://via.placeholder.com/150" alt="Product Image">
<h3 class="product-title">Товар 3</h3>
<p class="product-price">$89.99</p>
</div>
</div>
Объяснение кода:
.product-list: Flex-контейнер с поддержкой переноса строк и промежутками между карточками товаров.product-item: Flex-элементы (карточки товаров) с фиксированной шириной, которые автоматически адаптируются к размеру контейнера
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ