如何实现多行CSS水平滚动?

3

我知道如何在单行中使用元素进行简单的水平滚动。

单行演示:http://jsfiddle.net/YbrX3/1504/

但是,我如何使用CSS实现多行元素滚动,就像这样:

 1  |  3  |  5  |  7  |  9
---------------------------
 2  |  4  |  6  |  8  |  10

1
尝试在每一行中设置最大宽度,然后使用overflow:scroll。 - Undecided Dev
@NelsonTan - 你说的每一行是什么意思?正如你所看到的,我不需要行,因为顶部行上不是1、2、3、4、5。 - Fizzix
1个回答

14

以下是一个使用 flexbox 的解决方案-将此样式添加到scrolls中:

display: flex;
flex-direction: column;
flex-wrap: wrap;
height: 160px;

我将scrolls的高度加倍并设置了column的flex-direction。使用wrap即可获得所需的布局。

请见下方片段:

.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>

请告诉我您对此的反馈。谢谢!


3
效果出奇地好。谢谢! - Fizzix
我面临一个问题,就是如果我在第一项添加内容,第二项会以相同的宽度显示,那么我该如何让它根据内容自适应宽度呢? - Amarjit Singh
无论如何,数字“2”的宽度与数字“1”相同,并且这是预期的(即使您使用“align-items: flex-start”,例如,在布局中仍会有间隙,请参见https://jsfiddle.net/jp6Lq4yt/)。 - kukkuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接