JavaRush /Курсы /Модуль 1: Web Core /Создание сложных макетов

Создание сложных макетов

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

10.1 Двухколоночный макет

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

Макет блога с фиксированной навигацией

Этот макет включает заголовок, фиксированную навигационную панель, основное содержимое и боковую панель.

Пример:

CSS
    
      body {
        margin: 0;
        font-family: Arial, sans-serif;
      }

      .header {
        background-color: #333;
        color: white;
        padding: 20px;
        text-align: center;
      }

      .navbar {
        position: fixed;
        top: 0;
        width: 100%;
        background-color: #444;
        color: white;
        padding: 10px;
        box-sizing: border-box;
        z-index: 1000;
      }

      .container {
        display: flex;
        margin-top: 60px; /* Высота фиксированной навигации */
      }

      .main-content {
        flex: 3;
        padding: 20px;
      }

      .sidebar {
        flex: 1;
        padding: 20px;
        background-color: #f4f4f4;
      }

      .footer {
        background-color: #333;
        color: white;
        padding: 20px;
        text-align: center;
        position: relative;
        margin-top: auto;
      }
    
  
HTML
    
      <div class="header">My Blog</div>
      <div class="navbar">Navigation</div>
      <div class="container">
        <div class="main-content">
          <h1>Main Content</h1>
          <p>Here is the main content of the blog.</p>
        </div>

        <div class="sidebar">
          <h2>Sidebar</h2>
          <p>Links and other content.</p>
        </div>
      </div>
      <div class="footer">Footer</div>
    
  

В этом примере фиксированная навигационная панель остается на месте при прокрутке страницы благодаря position: fixed. Основное содержимое и боковая панель располагаются в двух колонках с помощью Flexbox.

10.2 Одностраничный сайт

Одностраничный сайт с закрепленным заголовком и подвалом

Этот макет включает заголовок, основное содержимое и подвал. Заголовок и подвал остаются видимыми при прокрутке страницы.

Пример:

CSS
    
      body {
        display: flex;
        flex-direction: column;
        min-height: 100vh;
        margin: 0;
        font-family: Arial, sans-serif;
      }

      .header {
        background-color: #333;
        color: white;
        padding: 20px;
        text-align: center;
        position: sticky;
        top: 0;
        z-index: 1000;
      }

      .main {
        flex: 1;
        padding: 20px;
        background-color: #f4f4f4;
      }

      .footer {
        background-color: #333;
        color: white;
        padding: 20px;
        text-align: center;
        position: sticky;
        bottom: 0;
        z-index: 1000;
      }
    
  
HTML
    
      <div class="header">Sticky Header</div>
      <div class="main">
        <h1>Main Content</h1>
        <p>Here is the main content of the page. Scroll to see the sticky header and footer in action.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque luctus lectus eu tortor vehicula, et convallis lacus varius. Integer at orci in nisl faucibus placerat.</p>
      </div>
      <div class="footer">Sticky Footer</div>
    
  

В этом примере заголовок и подвал остаются видимыми при прокрутке страницы благодаря position: sticky.

10.3 Многоуровневый навигационный бар

Этот макет включает многоуровневую навигационную панель, которая использует вложенные списки и псевдоклассы для создания выпадающих меню.

Пример:

CSS
    
      body {
        margin: 0;
        font-family: Arial, sans-serif;
      }

      .navbar {
        background-color: #333;
        overflow: hidden;
      }

      .navbar ul {
        list-style-type: none;
        padding: 0;
        margin: 0;
        position: relative;
      }

      .navbar li {
        float: left;
      }

      .navbar li a {
        display: block;
        color: white;
        text-align: center;
        padding: 14px 16px;
        text-decoration: none;
      }

      .navbar li a:hover {
        background-color: #111;
      }

      .navbar li ul {
        display: none;
        position: absolute;
        background-color: #333;
      }

      .navbar li:hover ul {
        display: block;
      }

      .navbar li ul li {
        float: none;
      }

      .navbar li ul li a {
        padding: 14px 16px;
      }
    
  
HTML
    
      <div class="navbar">
        <ul>
          <li><a href="#">Home</a></li>
          <li><a href="#">Services</a>
            <ul>
              <li><a href="#">Web Design</a></li>
              <li><a href="#">SEO</a></li>
              <li><a href="#">Marketing</a></li>
            </ul>
          </li>
          <li><a href="#">About</a></li>
          <li><a href="#">Contact</a></li>
        </ul>
      </div>
    
  
1
Задача
Модуль 1: Web Core, 11 уровень, 9 лекция
Недоступна
Двухколоночный макет
Двухколоночный макет
1
Задача
Модуль 1: Web Core, 11 уровень, 9 лекция
Недоступна
Одностраничный сайт
Одностраничный сайт
1
Опрос
Поток документа, 11 уровень, 9 лекция
Недоступен
Поток документа
Поток документа
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Gans Electro Уровень 42
2 октября 2025
Как я понимаю это было доп задание
Елена Уровень 13
22 сентября 2025
В тесте такой вопрос. Здесь же ответ должен быть - свойство opacity со зачением меньшим 1, то есть подходит два варианта, а выбрать только один. Соответсвенно ответ при любом варианте неправильный
Анастасия Уровень 28
7 июля 2025
В первом примере фикированный элемент перекрывает header, почему так в примере сделали? В последнем примере у 2 элемента списка есть подсписок, но он не отображается и не вызывается... Какой смысл его в пример запихивать?
Иван Уровень 18
26 мая 2025
В приведённых примерах прокрутка не отображается, хотя необходима для демонстрации примера. Многоуровневое навигационное меню также не отображается корректно во фрейме примера.
No Name Уровень 36
24 мая 2025
+ лекция в копилке
Vadim Makarenko Уровень 42
24 апреля 2025
В последнем примере так и не получилось вызвать второй-вложенный уровень меню пункта Services, заявленный в коде.
Daria Snegireva Уровень 20
24 марта 2025
В примере увидела

z-index: 1000;
Насколько мне известно, такие значения просто так рекомендуется не использовать.
27 февраля 2025
В первой задаче для чего сделано задание которое допускает видимую проблему с перекрытием? Нельзя не создавать такой гемор? Лучше бы придерживались хороших практик не использовать методы позиционирования, проблемы которых надо решать отступами всех блочных и внутренних элементов относительно фиксированного блока!!!
Vadim Makarenko Уровень 42
24 апреля 2025
Видимо имеется ввиду, что из-за top:0 и большого z-index зафиксированная навигационная панель перекрыла шапку сайта, где по центру должна была идти надпись My Blog.