【发布时间】:2018-11-22 10:47:56
【问题描述】:
我有两个并排放置的列表。在桌面上,这些列表会将li 元素显示为一列。但是,对于移动设备,我希望li 成为两列布局,每列具有相同的选项。 IE。如果总共有 11 个 li 元素,则它将是一列 6 列,另一列 5 列。不希望一列中有 8 个元素,而另一列中有 3 个。
我想要达到的目标:
- 一列最多包含五个 li 元素。
- 如果一列的列表只有五个元素,则只显示一个居中的列。
我当前的方法使用 max-height 属性,这会破坏移动设备上的布局,但这是我遇到的唯一一种可行的方法。
示例代码:
.main__wrapper{
display:flex;
flex-direction: row;
}
.wrapper-one{
padding-left:40px;
}
ul{
list-style-type: none;
padding: 0;
margin: 0;
text-align:center;
}
ul li{
font-size: 1rem;
overflow: hidden;
}
@media (max-width:576px) {
ul{
-webkit-flex-flow: wrap column;
text-align: center;
flex-flow: wrap column;
max-height: 400px;
border: 1px solid red;
}
ul li{
max-width: 50%;
}
}
<div class="main__wrapper">
<div class="wrapper-one">
<h3>Heading 1</h3>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
<div class="wrapper-one">
<h3>Heading 2</h3>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
</div>
目前,如果列表元素超过五个,我的列表会显示在两列中,但 max-width: 400px; 会破坏移动设备上的布局。宽度用于强制每列最多 5 个。
iPhone 6/7/8 Plus:
第二个列表(视频类型),该列有五里,因此我希望它居中。
iPhone 6/7/8:
如您所见,结构在较小的屏幕上中断。
【问题讨论】:
-
你有没有想过 CSS-columns 而不是 flexbox(甚至是 CSS-Grid)!?