Расположение блока в зависимости от ширины экрана
Есть ряд блоков:
<div id='1'><div>Контент</div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div id='2'></div>
Есть ли на css вариант сделать так, чтобы блок с контентом при изменении ширины экрана, например менее 480px, был не в id='1', а в id='2'
Или всё же нужно два одинаковых делать и скрывать/показывать через медеа в зависимости от ширины?
Ответы (1 шт):
Напрямую, в голых стилях и DOM не получится. Стиль описывает только параметры, привязанные к элементам документа и как они могут меняться. Иерархия остается прежней.
Нужна поддержка модулей вроде Flexbox или CSSGrid. тогда в CSS можно описать параметры flex-контейнеров, изменяемые в зависимости от среды (ключевые слова для поиска Flexbox CSS media query for layout change).
Если есть поддержка скриптов, это можно сделать в JavaScript с помощью запросов к документу, document.getElementById и document.appendChild в обработчике:
<div id='1'><div id="Moving">Контент</div></div>
<div id='2'></div>
<script>
function moveDiv() {
const movableDiv = document.getElementById('Moving');
if (window.innerWidth <= 480) {
document.getElementById('2').appendChild(movableDiv);
} else {
document.getElementById('1').appendChild(movableDiv);
}
}
window.addEventListener('load', moveDiv);
window.addEventListener('resize', move);
</script>
(код писан на коленке в блокнотике и м.б. неверным)
PS. Если напрячься, с помощью CSS можно указать скрипту что и куда в документе переставлять, но это будут серьезные затраты на разработку и поддержку. Как минимум, раньше видел такое в веб страничке "Кинопоиска".