Навчитись використовувати технологію CSS Grid для побудови складних двомірних макетів сторінок інтернет-магазину. Реалізувати бічний сайдбар з фільтрами та адаптувати сайт під планшети та мобільні телефони за допомогою Медіа-запитів (@media).
grid-template-columns).aside.repeat(auto-fill, ...) без Flexbox.@media (max-width: 768px)).Увага: Продовжуємо роботу над інтернет-магазином “TechShop”.
<main> потрібно змінити структуру. Обгорніть весь <div class="products-grid"> та додайте поруч бічну панель <aside class="sidebar">.Загальна структура має бути такою:
<main class="page-layout">
<aside class="sidebar">
<h3>Фільтри</h3>
<!-- Тут будуть чекбокси категорій, напр. Ноутбуки, Смартфони -->
<ul>
<li><input type="checkbox" /> Ноутбуки</li>
<li><input type="checkbox" /> Смартфони</li>
</ul>
</aside>
<section class="products-content">
<h2>Популярні товари</h2>
<div class="products-grid">
<!-- Ваші картки <article> -->
</div>
</section>
</main>
.page-layout:
.page-layout {
display: grid;
/* Перша колонка (сайдбар) - 250px, друга (контент) - бере решту місця (1fr) */
grid-template-columns: 250px 1fr;
gap: 2rem;
padding: 2rem 5%;
}
.sidebar: додайте фоновий колір, padding, border-radius, щоб він візуально відділявся від карток товарів..products-grid був Flexbox-елементом. Давайте зробимо його ідеальним CSS Grid. Видаліть/перекрийте старі flex-стилі:
.products-grid {
display: grid;
/* Магічна формула: Автоматично розставляй картки з мінімальною шириною 280px та розтягуй до 1fr */
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 2rem;
}
У кінець файлу style.css додайте медіа-запит:
@media screen and (max-width: 768px) {
.page-layout {
/* Перемикаємо на один стовпець: сайдбар і контент будуть один під одним */
grid-template-columns: 1fr;
}
/* Можна також сховати логотип по центру в хедері для економії місця (як приклад) */
.header {
flex-direction: column;
gap: 1rem;
}
}
git add . та git commit -m "Implement CSS Grid layout and Mobile responsiveness".main.Сторінка “TechShop” перетворилася на повноцінний двоколонковий макет для десктопу (з фільтрами збоку та ідеальною сіткою товарів), який елегантно складається в один стовпець на мобільному телефоні.
1fr у правилі grid-template-columns: 250px 1fr;?repeat(auto-fill, minmax(300px, 1fr)). Що відбувається, коли екран стає дуже широким? А коли вузьким?@media (max-width: 768px)?