Для этого можно использовать порядок flexbox
.
От MDN :
Свойство order CSS
устанавливает порядок размещения элемента в контейнере flex или grid.Элементы в контейнере сортируются по возрастанию значения заказа, а затем по порядку их исходного кода.
Посмотрите эту демонстрацию.Откройте его в режиме «Полная страница» и измените размер экрана до 400px
, чтобы поля начинали перекрываться.Используя порядок, я поменял или переключил div
s без необходимости каких-либо JavaScript
.
html, body {
margin: 0;
}
.container {
display: flex;
width: 500px;
max-width: 100%;
border: 1px solid red;
justify-content: space-between;
}
.container > * {
position: relative;
width: 200px;
height: 100px;
}
.container > *::after {
position: absolute;
bottom: -1.5em;
left: 50%;
transform: translateX(-50%);
color: black;
}
.left {
background-color: green;
}
.left::after {
content: 'left';
}
.right {
background-color: blue;
}
.right::after {
content: 'right';
}
@media screen and (max-width: 400px) {
.left {
order: 1;
}
.left::after {
content: 'right';
}
.right::after {
content: 'left';
}
}
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
jsFiddle