Как создать многострочную горизонтальную прокрутку CSS?

#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 )