Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как поменять элементы местами

Короткий ответ

Во flex- или grid-контейнере порядок задаёт свойство order. По умолчанию у всех 0, меньшее значение стоит раньше:

<style>
  .row { display: flex; gap: 8px; }
  .row div { padding: 8px 16px; background: lavender; }
  .row .first { order: -1; background: gold; }
</style>
 
<div class="row">
  <div>One</div>
  <div>Two</div>
  <div class="first">Three</div>
</div>

Развернуть весь ряд

flex-direction: row-reverse или column-reverse выстраивает все элементы в обратном порядке:

<div style="display: flex; flex-direction: row-reverse; justify-content: flex-end; gap: 8px;">
  <span>1</span><span>2</span><span>3</span>
</div>

Разный порядок на разных экранах

Чаще всего порядок меняют в медиазапросе: на компьютере картинка справа от текста, а на телефоне — над ним:

<style>
  .media { display: flex; gap: 12px; }
  @media (max-width: 500px) { .media { flex-direction: column; } .media img { order: -1; } }
</style>
 
<div class="media">
  <p>Text about our flower shop.</p>
  <img src="/media/photo-200x200.jpg" alt="A flower" width="100" height="100">
</div>

В сетке то же самое удобно делать через grid-template-areas — меняется только схема областей.

Частая ошибка

Через order переставляют важные элементы — кнопки, ссылки, поля формы. Глаз видит новый порядок, а клавиша Tab и скринридер идут по порядку в HTML: фокус начинает прыгать по странице. Если порядок важен по смыслу, меняйте его в самом HTML.

Функции из этого ответа

  • order — Меняет видимый порядок flex- или grid-элемента.
  • flex-direction — Направление главной оси flex-контейнера: элементы в ряд или в столбик.
  • grid-template-areas — Рисует раскладку сетки картой именованных областей.
  • display — Определяет, как элемент ведёт себя в потоке и как раскладывает содержимое.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.