CSS плавает, порядок изменения в макете?
У меня есть обычный макет, который выглядит так:
![enter image description here]()
Этот макет выполняется с помощью поплавков CSS.
Когда я переключаюсь на мобильный, я хочу, чтобы мой макет сделал это:
![enter image description here]()
То есть, я хочу, чтобы моя боковая панель была ниже. Я могу сделать это, используя абсолютное позиционирование, но мне было интересно, есть ли способ сделать это с помощью float, так что, если мой контент изменится, боковая панель будет регулировать разницу высот?
Ответы
Ответ 1
Вот как я это сделаю. DIVs размещаются на вашей настольной версии, но отображаются поверх каждого из них (отображение по умолчанию block
) на мобильном устройстве.
CSS
#sidebar {
float: left;
width: 30%;
}
#content {
float: right;
width: 70%;
}
.mobile #sidebar,
.mobile #content {
float: none;
display: block;
margin-bottom: 15px;
}
Стандартный HTML:
<body>
<div id="content">
...
</div>
<div id="sidebar">
...
</div>
</body>
Мобильный HTML:
<body class="mobile">
<div id="content">
...
</div>
<div id="sidebar">
...
</div>
</body>
Ответ 2
Предполагая, что:
- Два элемента имеют общий родительский элемент
- Содержимое div отображается перед боковой панелью в источнике
Вам не нужно менять исходный порядок, вы можете добиться этого с помощью поплавков по умолчанию.
То есть в макете рабочего стола:
#content {
float: right;
width: 60%;
}
#sidebar {
float: left;
width: 40%;
}
Затем для мобильных устройств (используя мультимедийные запросы или любой другой механизм):
#content, #sidebar {
float: none;
clear: both;
}
Ответ 3
В запросах для мобильных медиа установите float:none
.
Ответ 4
На самом деле, я хотел установить макет, как первый макет, поэтому я использовал:
.iconHome{
float: left;
border: 1px solid #73AD21;
width: 50%;
height: 100px;
background-color: aqua;
/*margin: 50px;*/
}
<div class="iconHome1">
</div>
<div class="iconHome1">
</div>
В результате получается вторая компоновка. Поэтому я считаю, что по умолчанию "float: left" не устанавливается на мобильном устройстве. Вы можете использовать выше. Надеемся помочь вам.
Edit:
Я пробовал несколько кодов:
.iconHome1{
float: left;
border: 1px solid #73AD21;
width: 50%;/*185px*/
height: 200px;
background-color: aqua;
margin: 0;/*0 0 0 -7px*/
/*clear: left;*/
}
![введите описание изображения здесь]()
Это означает, что "ширина" и "margin" будут влиять на макет, хотя вам нужно установить "float: left". Исправить "ширина: 49%", результат:
![введите описание изображения здесь]()
Ответ 5
Медиа-запрос, контейнер flex
и его свойство order
должны выполнить трюк:
@media(max-width:767px) {
.container {
display: flex;
flex-wrap: wrap;
}
.content {
order: 1;
}
.sidebar {
order: 2;
}
}
Обязательно замените значение max-width
на свою собственную точку останова мобильной связи.
Поддержка браузера для flex также довольно приличная.