【问题标题】:Two-column vertical-numbered lists with Flexbox使用 Flexbox 的两列垂直编号列表
【发布时间】:2022-04-26 16:48:33
【问题描述】:

我确定这一定是重复的,但我找不到任何相关的答案,因为很多人将 flexbox 元素称为“列表”,而实际上他们并没有使用 <ul><ol> HTML 元素,并且正在制作等效于 inline-block div 元素。

我有一个无序列表,我需要使用 Flexbox 将其显示为两列。根据今天的阅读,我管理了两列,但是项目的索引顺序是从左到右,而不是从上到下:

ol { display:flex; flex-wrap:wrap; flex-direction:row; }
ol li { flex:1 1 auto; width:40%; }
    
<ol>
 <li>Item A</li>
 <li>Item B</li>
 <li>Item C</li>
 <li>Item D</li>
 <li>Item E</li>
 <li>Item F</li>
 <li>Item G</li>
 <li>Item H</li>
</ol>

我需要的输出是:

1. Item A          5. Item E
2. Item B          6. Item F
3. Item C          7. Item G ... etc

我尝试将flex-direction:row 替换为column,但它只显示了一个列表。

【问题讨论】:

  • 你需要给一个固定的高度,..
  • @ArupRakshit 就是这样!如果我在列表上指定 5em 高度,我实际上也不需要设置列表项宽度。谢谢!也许您应该发布一个正确的答案并获得应得的代表?!?
  • 具有讽刺意味的是,当在两列中时,可读性会大大降低。在某种程度上我已经关闭了编号,在这种情况下,弯曲方向不再重要......(!)
  • 我觉得如果应用 flexbox 看起来很难,那么 grid 可能会有所帮助.. :)

标签: css flexbox


【解决方案1】:

我认为您必须定义最大高度。您当前的 css 行没有定义包装应该发生的“WHERE”。

ol { display:flex; flex-wrap:wrap; flex-direction:row; max-height: 30px}
ol li { flex:1 1 auto; width:40%; }
    
<ol>
 <li>Item A</li>
 <li>Item B</li>
 <li>Item C</li>
 <li>Item D</li>
 <li>Item E</li>
 <li>Item F</li>
 <li>Item G</li>
 <li>Item H</li>
</ol>

【讨论】:

  • 请将更正后的代码与您的答案一起发布。正如@ArupRakshit 所说,这确实是正确的,但对于其他有此问题的人来说,这并不是一个完整的解决方案。
【解决方案2】:

您也可以使用列 (https://www.w3schools.com/css/css3_multiple_columns.asp)。有时它可能很笨拙,但我认为它适用于列表。

ol {
  columns: 2
}
<ol>
 <li>Item A</li>
 <li>Item B</li>
 <li>Item C</li>
 <li>Item D</li>
 <li>Item E</li>
 <li>Item F</li>
 <li>Item G</li>
 <li>Item H</li>
</ol> 

【讨论】:

    【解决方案3】:
    ol { 
       display:flex; 
       flex-wrap:wrap; 
       flex-direction:column; 
       height: 100px; 
    }
    

    ol li 没有样式

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多