【问题标题】:How to create a horizontally scrollable flex column of reversed flex rows?如何创建反向伸缩行的水平可滚动伸缩列?
【发布时间】:2019-11-24 00:42:48
【问题描述】:

我想创建一个可水平滚动的 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>

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;
}

我希望有两行的水平滚动列,显示 6,5,4,3,2,1(即倒序),其中每个 div 都是 display: flex

【问题讨论】:

  • “你可以看到水平滚动条消失了。” - 因为你忽略了让你的弹性项目换行,所以你的两个“行”显示在一行上。将flex-wrap: wrap; 添加到.column

标签: html css flexbox overflow


【解决方案1】:

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

这是因为你忽略了让你的弹性项目换行,所以你的两个“行”都显示在一行上。

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

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

【讨论】:

    【解决方案2】:

    使用这种格式的代码。

    .column{
      display:flex;
      overflow:auto;
      flex-wrap:wrap;
      flex-direction: column;
    }
    .row {
      display:flex;
      flex-direction: row-reverse;
      flex-wrap:nowrap;
    }
    
    .box{
      display:flex;
      background: red;
      margin:2px;
      min-width:200px;
      min-height:50px;
      padding:5px;
      color:white;
    }
    <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>

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多