#html #css
#HTML #css
Вопрос:
Я понимаю, как сделать простую горизонтальную прокрутку с элементами, которые все находятся в одной строке.
Однострочная демонстрация: http://jsfiddle.net/YbrX3/1504 /
Хотя, как я могу выполнить многострочную прокрутку элемента с помощью CSS, например, так:
1 | 3 | 5 | 7 | 9
---------------------------
2 | 4 | 6 | 8 | 10
Комментарии:
1. попробуйте установить максимальную ширину для каждой строки, затем используйте overflow:scroll.
2. @NelsonTan — Что ты подразумеваешь под каждой строкой? Как вы можете видеть, мне не нужны строки, так как это не 1,2,3,4,5 в верхнем ряду.
Ответ №1:
Вот решение, использующее flexbox
— добавил этот стиль в scrolls
:
display: flex;
flex-direction: column;
flex-wrap: wrap;
height: 160px;
Я удвоил высоту scrolls
и придал ей column
гибкое направление. Обернув его, вы получите нужный вам макет.
Смотрите фрагмент ниже:
.wrapper {
background: #EFEFEF;
box-shadow: 1px 1px 10px #999;
margin: auto;
text-align: center;
position: relative;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
margin-bottom: 20px !important;
width: 100%;
padding-top: 5px;
}
.scrolls {
overflow-x: scroll;
overflow-y: hidden;
display: flex;
flex-direction: column;
flex-wrap: wrap;
height: 160px;
white-space: nowrap
}
.scrolls div {
padding: 20px;
box-shadow: 1px 1px 10px #999;
margin: 2px;
display: inline-block;
vertical-align: top;
}
<div class="wrapper">
<div class="scrolls">
<div>
1
</div>
<div>
2
</div>
<div>
3
</div>
<div>
4
</div>
<div>
5
</div>
<div>
6
</div>
<div>
7
</div>
<div>
8
</div>
<div>
9
</div>
<div>
10
</div>
<div>
11
</div>
<div>
12
</div>
<div>
13
</div>
<div>
14
</div>
</div>
</div>
Дайте мне знать ваши отзывы по этому поводу. Спасибо!
Комментарии:
1. Сработало на удивление хорошо. Спасибо!
2. есть одна проблема, с которой я сталкиваюсь, например, если я добавляю содержимое в № 1, № 2 занимает одинаковую ширину, так как я могу заставить его принимать ширину в соответствии с содержанием?
3.
2
будет иметь ту же ширину,1
что и в любом случае, и ее ожидаемую (даже если вы используетеalign-items: flex-start
, например, у вас будет пробел в макете, см. jsfiddle.net/jp6Lq4yt )