如何创建反向伸缩行的水平可滚动伸缩列?

num*_*jak 1 html css overflow flexbox

我想创建一个水平滚动的 flex 列,其中包含多个 flex 行,但是我想以相反的方式显示每一行。即 1,2,3,4,5,6 显示为 6,5,4,3,2,1。

这是我尝试的 JSFiddle:

https://jsfiddle.net/6kjgdtas/

如您所见,水平滚动条消失了。

HTML:

<div class="column">
  <div class="row">
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
    <div class="box">5</div>
    <div class="box">6</div>
  </div>
  <div class="row">
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
    <div class="box">5</div>
    <div class="box">6</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.column {
  display: flex;
  flex-direction: column;
  overflow: auto;
}

.row {
  display: flex;
  flex-direction: row-reverse;
}

.box {
  display: flex;
  width: 200px;
  height: 40px;
  margin: 2px;
  background: red;
  flex-shrink: 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望一个水平滚动的两行列,显示 6,5,4,3,2,1(即逆序),其中每个 div 显示:flex

mis*_*ude 5

如您所见,水平滚动条消失了。

发生这种情况是因为您忽略了让 flex 项目wrap,因此您的两个“行”都显示在一行上。

添加flex-wrap: wrap;.column, 以允许元素在需要时换行:

.column {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)