JavaRush /Курсы /Модуль 1: Web Core /Комплексные макеты

Комплексные макеты

Модуль 1: Web Core
9 уровень , 9 лекция
Открыта

10.1 Простая сетка

Flexbox позволяет создавать гибкие и адаптивные макеты. Сейчас мы рассмотрим несколько примеров использования Flexbox для создания различных макетов, включая простую сетку, центрирование элементов, создание навигационных меню и карточек товаров.

Создание простой сетки с использованием Flexbox. Этот пример демонстрирует, как можно легко создать равномерно распределенные элементы в контейнере.

Пример использования:

CSS
    
      .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;
      }
    
  
HTML
    
      <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.

Пример использования:

CSS
    
      .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;
      }
    
  
HTML
    
      <div class="flex-container">
        <div class="flex-item">Centered Item</div>
      </div>
    
  

10.3 Навигационное меню

Создание горизонтального навигационного меню с использованием Flexbox.

Пример использования:

CSS
    
      .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;
      }
    
  
HTML
    
      <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.

Пример использования:

CSS
    
      .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;
      }
    
  
HTML
    
      <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-элементы (карточки товаров) с фиксированной шириной, которые автоматически адаптируются к размеру контейнера
1
Задача
Модуль 1: Web Core, 9 уровень, 9 лекция
Недоступна
Создание простой сетки
Создание простой сетки
1
Задача
Модуль 1: Web Core, 9 уровень, 9 лекция
Недоступна
Навигационное меню
Навигационное меню
1
Опрос
Flexbox, 9 уровень, 9 лекция
Недоступен
Flexbox
Flexbox
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Roman Уровень 6
4 мая 2025
Вторая задача моросит... Ставишь justify-content: space-around; говорит надо justify-content: space-between; и так наоборот и до бесконечности💁‍♂️ Хотя все норм
Roman Уровень 6
4 мая 2025
Разобрался... Эту задачу делал без классов и ничего не заработало пока не прописал классы элементам... Остальной код не менял.