⚙️
Front-end patterns
  • Введение
  • Шаблоны
    • Эффекты CSS
      • Overlay
      • Анимация display:none
      • Текст
        • Фон текста градиент с анимацией
      • Элементы формы
        • Вертикальное выравнивание placeholder по вертикали
      • Ссылки
        • Градиент как основной цвет
        • Линия под ссылкой ездит слева направо при наведении
      • Скрывать блок .clipped
    • Модальное окно
      • Dialog
    • Элементы формы
      • Select
      • Radio
      • CheckBox
      • Ввод текста (input)
        • Телефон (tel)
        • Почта (email)
      • Кнопка
    • Вкладки/Списки
      • Вкладки или Табы (tabs)
      • Аккордеон (Accordion)
    • Навигация
      • Основная и дополнительная навигация на сайте
        • Анимирование основной навигации
      • Пропустить навигацию
      • Хлебные крошки (Breadcrumbs)
      • Кнопка основной навигации (Бургер)
    • Структуры
      • Контейнер
      • Столбцы
      • Прогресс
      • Горизонтальная прокрутка карточек
      • Цитата
    • Тэги (семантика)
      • Текст
      • Логика
    • Увеличить скорость загрузки страницы
    • Шрифты
  • JS
    • Прокрутка страницы
    • Анимация элементов
  • A11Y
    • Фокус с клавиатуры
    • No sort
  • WordPress
    • Решения и подсказки
    • Плагины
    • Натягиваем сайт
      • Пустая тема
      • Делаем главную (пустую) страницу
      • Подключаем стили и js
      • Заменяем содержимое файлов (header, footer, page)
    • Свой плагин
      • Шаблон
      • Административная часть
      • Пользовательская часть
      • Локализация плагина
  • Ghost
    • Создание своей темы
      • Фалы шаблона
        • Partials
          • footer.hbs
          • header.hbs
          • post_card.hbs
        • index.hbs
        • default.hbs
        • post.hbs
      • Переменные
      • Циклы, условия и функции
  • Visual Studio
  • Gulp
    • Deploy on GitHub
    • Плагин
    • Моя сборка
      • Изображения
  • Регулярные выражения
  • Алгоритмы
    • Поиск
    • Сортировка
    • Поиск в ширину (глубину)
    • Типы данных
  • Конструкторы сайтов
Powered by GitBook
On this page

Was this helpful?

  1. Шаблоны
  2. Структуры

Контейнер

Для выравнивания содержимого на странице

Часто в макетах необходимо чтобы один из столбцов выходил за границы контейнера (до края страницы).

<div class="container-grid">
    <p>Этот контейнер займет обычную максимальную ширину</p>
</div>

<div class="container-grid">
    <p class="container-grid__fw">
        Этот контейнер займет всю ширину экрана
    </p>
</div>

<div class="container-grid">
    <div class="container-grid__fw-right">
      <p>Не выйдет за контейнер</p>
      <p>Этот контейнер займет всю ширину экрана только справа</p>  
    </div>
</div>

<div class="container-grid">
    <div class="container-grid__fw-left">
      <p>Этот контейнер займет всю ширину экрана только слева</p>  
      <p>Не выйдет за контейнер</p>
    </div>
</div>

При создании контейнера c блоками, которые должны выходить за ширину обязательно необходимо создавать два потомка

Параметры

--maxWidth - максимальная ширина контейнера

--padding-inline - определяет минимальную ширину отступа от экрана (px или em)

--fw-column-size - задается размер столбца, который растягивается на весь экран (в единицах, напр. 50 - что означает, что блок займет 50% контейнера + растянится за контейнер на выбранную сторону (задается классом))

--wrap-column-size - определяет размер колонки при котором будет перемещение потомков из плоскости "строка" в плоскость "столбец". Это необходимо для мобильный версий.

.container-grid {
   // justify-items: center - не дает содержимому расстягиваться на всю допустимую ширину
  --padding-inline: 16px;
  --fw-column-size: 60;
  --wrap-column-size: 300px; // Этот размер подобран таким образом, чтобы при брейкпоинте 576 и соотнешении колонок 50-50 был переход с двух колонок в ряд в две колонки в столбец

  display: grid;
  grid-template-columns:
   [full-start]
   0px
   
   [left-start]
   minmax(var(--padding-inline), 1fr)

   [right-start]
   0px
   
   [content-start] 
   min(100% - (var(--padding-inline) * 2), var(--maxWidth))
   [content-end]

   0px
   [left-end]
    
   minmax(var(--padding-inline), 1fr) 
   [right-end]

   0px
   [full-end] ;

   & > * {
      grid-column: content;
   }

   & > &__fw {
      grid-column: full;
   }

   & > &__fw-left, 
   & > &__fw-right {
      display: flex;
      flex-wrap: wrap;

   }

   & > &__fw-left {
      grid-column-start: 1;
   }

   & > &__fw-right {
      grid-column-end: none;
   }
   
   & > &__fw-left > *:last-child,
   & > &__fw-right > *:first-child {
      min-width: var(--wrap-column-size);
      flex-grow: 1;
      flex-shrink: 1;
   }

   & > &__fw-left > *:last-child,
   & > &__fw-right > *:first-child {
      flex-basis: calc(min((100% - var(--padding-inline)), var(--maxWidth)) * (1 - var(--fw-column-size)/100));
   } 

   & > &__fw-left > *:first-child, 
   & > &__fw-right > *:last-child {
      flex-grow: 1000000;
      min-width: calc((var(--wrap-column-size) / (1 - var(--fw-column-size)/100)) - var(--wrap-column-size) + var(--padding-inline));
   }
}
PreviousСтруктурыNextСтолбцы

Last updated 9 months ago

Was this helpful?