Перестановка порядка блоков в CSS без position:absolute
Быстрый ответ
Желаете оживить дизайн вашей страницы? С использованием CSS Flexbox вы с лёгкостью сможете изменить расположение блоков. Просто установите для родительского элемента display: flex;, а для дочерних элементов свойство order:
.container {
  display: flex; /* Теперь контейнер работает как flex-контейнер */
}
.block1 {
  order: 2; /* Место Block1 теперь второе */
}
.block2 {
  order: 1; /* Block2, теперь ты на первом месте! */
}
Благодаря свойству order вы определите порядок отображения блоков, игнорируя их начальное местоположение в исходном HTML. Это особенно рационально при динамической перестройке контента и необходимости адаптировать дизайн под мобильные устройства.

Применение медиа-запросов
Медиа-запросы CSS помогут приспособить ваш сайт к различным размерам экранов и подстроить расположение элементов так, чтобы они становились лёгкими для восприятия.
@media (max-width: 600px) {
  .container {
    flex-direction: column; /* Меняем расположение на вертикальное на малых экранах */
  }
  .block1, .block2 {
    order: 1; /* Порядок меняется в зависимости от размера экрана */
  }
}
С помощью медиа-запросов элементы будут отлично выглядеть на экранах любого размера, что обеспечит лучшее взаимодействие пользователя со страницей.
Прогрессивное улучшение
Важно не забывать о прогрессивном улучшении и поддержке старых версий браузеров. Используйте префиксы -webkit-box и -moz-box, чтобы обеспечить работу вашего сайта как со старыми, так и с новыми версиями браузеров, поддерживающими Flexbox.
.container {
  display: -webkit-box; /* Для старых версий Safari и Chrome */
  display: -moz-box; /* Для старых версий Firefox */
  display: flex; /* Современный стандарт flex */
  flex-wrap: wrap; /* Элементы теперь могут переноситься на новую строку */
}
Независимо от использования конкретного браузера, каждый пользователь получит наилучший возможный результат.
Растяжимые отзывчивые макеты
Адаптивные макеты прекрасно подстраиваются под размеры контейнера. Благодаря свойству flex, блоки правильно растягиваются и размещаются, в то же время избегая наложения одного на другой.
.block {
  flex: 1;
  padding: 10px; /* Добавляем отступы для дополнительного пространства */
}
Забудьте о позиционировании с помощью absolute, так как гибкие макеты поддерживают нормальный поток документа и предоставляют блокам необходимое пространство.
Визуализация
Рассмотрим два блока:
До перестановки: 📍 Блок A 📍 Блок B
И вот, здесь вступает в действие магия flexbox! Порядок блоков изменяется, при этом HTML-структура остается нетронутой:
.block-container {
  display: flex;
  flex-direction: row-reverse; /* Идем в обратном направлении */
}
В результате получаем следующую картину:
После перестановки: 📍 Блок B 📍 Блок A
Основная концепция: Мы меняем порядок блоков, при этом сохраняя структуру DOM.
Честная игра с семантикой контента
При использовании визуального порядка стоит помнить о семантике контента. Изменения не должны вводить пользователей в заблуждение и нарушать логику навигации, так как доступность важна.
/* Изменяем порядок, сохраняя семантическую ценность элементов */
@media (min-width: 768px) {
  .container {
    display: flex; /* Вновь используем flex */
    flex-direction: row; /* Элементы расположены в ряд */
  }
  .nav {
    order: 2; /* Навигация перемещается на второе место */
  }
  .main-content {
    order: 1; /* Основной контент идет первым */
  }
}
Эстетическая привлекательность интерфейса никогда не должна иметь более высокого приоритета чем семантическая структура и логичность навигации.
Сочетание с другими CSS-свойствами
Flexbox идеально совмещается с другими свойствами. Можно использовать трансформацию scaleY(-1), чтобы перевернуть блоки без изменения их порядка.
.flipped-container {
  display: flex;
  transform: scaleY(-1); /* Переворачиваем контейнер */
}
.flipped-container > * {
  transform: scaleY(-1); /* Также переворачиваем каждый дочерний элемент */
}
Такой креативный подход внесет разнообразие в макеты и расширит возможности для создания динамичных дизайнов.
Полезные материалы
- Полное руководство по Flexbox от CSS-Tricks — это незаменимый ресурс для освоения flexbox-макета.
 - Основные концепции flexbox — MDN — Вводные материалы MDN о flexbox.
 - Полное руководство по CSS Grid от CSS-Tricks — подробное руководство по CSS Grid макету.
 - Макет сетки CSS — MDN — это лучшие объяснения от MDN на тему CSS Grid Layout.
 - Как перевернуть изображение — руководство по перевороту изображений с помощью CSS.
 - Свойство order в CSS — информация о том, как понимать и применять визуальный порядок элементов при использовании свойства 
orderв CSS. 


