У меня есть сценарий, в котором я использую отзывчивый макет для горизонтального прокручивания «меню» с размером overflow-x:scroll
, когда размер экрана мал и его вертикальное значение с overflow-y:scroll
раз он будет соответствовать по вертикали.Как сделать элементы потоками вниз, а затем в ответном макете
Проблема, с которой я столкнулась, заключается в том, что при ее горизонтальном направлении поток внутренних элементов в настоящее время слева направо, а когда ящик заполнен, остальные скрыты, и они не толкаются дальше по оси х.
Я пробовал несколько предложений, которые я нашел here и here. Я также попытался использовать transform:rotate(90deg);
на внешней стороне, а затем transform:rotate(-90deg);
на внутренних, но это казалось break the rest of the layout.
Я смотрел flex
, но поскольку мне нужно поддерживать IE8 +, это не вариант.
Этот фрагмент кода демонстрирует проблему: (JavaScript не является частью проблемы, ее только для демонстрации вопроса)
$('#toggle').on('click', function(){
$('#responsive').toggleClass('vertical');
});
var blockString = "",
blocks = function() {
for (var i = 0; i < 80; i++) {
blockString += '<span style="background-color: #' + (Math.random() * 0xFFFFFF << 0).toString(16) + '">' + i + '</span>'
}
}
blocks();
$('#responsive').append(blockString);
#responsive {
background-color: #eee;
height: 200px;
overflow-x: scroll;
overflow-y: hidden;
padding: 5px;
border: 3px solid #aaa;
}
#responsive.vertical {
height: 400px;
width: 200px;
float: left;
overflow-x: hidden;
overflow-y: scroll;
}
#responsive > span {
width:130px;
height:50px;
display:inline-block;
margin:5px;
}
#panel {
background-color: #eee;
height: 400px;
padding: 5px;
border: 3px solid #aaa;
margin-left:0px;
margin-top:5px;
}
#responsive.vertical + #panel {
margin-left:220px;
margin-top:0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button id="toggle">Toggle Layout</button>
<br /><br />
<div id="responsive" class="vertical">
</div>
<div id="panel">Here is the main page</div>
I добавили дополнительный div в качестве контейнера для элементов span, чтобы упростить любые корректировки CSS без нарушения верхний контейнер «реагирует». –
Спасибо за это, проблема с вашим ответом заключается в том, что вы указали фиксированную ширину 3800 пикселей на этот «контейнер», который работает так, как вы ожидали бы в демо. Однако в реальном мире он не будет заполнен 80 равными размерами прямоугольников, но между 1 и 1000 объектами случайного размера. – wf4
Я обновил свой ответ, чтобы не расширять ширину для этих 80 элементов. Однако вам нужно как-то указать, когда вы хотите, чтобы элементы разбивали строку (я установил ее на 40, чтобы проверить часть JS), чтобы не иметь всех элементов в одной строке. –