【发布时间】:2020-06-17 19:35:12
【问题描述】:
我希望有多个 div,它们都具有相同的宽度和高度,并且每个边都有一个边距,覆盖了某个容器的整个宽度,并且它们之间的空间相等。当容器宽度变窄到不能保留 div 宽度(包括它们的边距)时,div 应该折叠起来。每行外边缘的 div 应与整个容器宽度齐平。我确实知道元素的确切数量。
Flexbox 与flex-wrap: wrap 和justify-content: space-between 一起很好地做到了这一点,但我不喜欢的是,当行换行时,我最初会得到一个包含位于行两侧的 2 个 div 的行。然后当第三个 div 包装时,它将是死点。我知道这是我对space-between 的要求,但我真正想要的是包装行为将底行上的 div 与上面的对齐 div 左对齐和垂直对齐。
我知道this solution here,它工作得很好,但我想不出一种方法来防止不使用媒体查询的容器底部的可变间距。间距的高度取决于容器/屏幕的宽度,我需要它保持一致。
这不一定要通过 flexbox 来完成。我对其他解决方案持开放态度,但我必须支持 IE10+(最好还支持 IE9,我知道它排除了 flexbox)。例如,在这个例子中,我想寻找这两行的好处:
.flex-container {
padding: 0;
margin: 0;
list-style: none;
border: 1px solid silver;
-ms-box-orient: horizontal;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
}
.wrap-1 {
justify-content: space-between;
}
.wrap {
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
}
.wrap-1 li {
background: tomato;
}
.wrap-2 li {
background: gold;
}
.flex-item {
padding: 5px;
width: 100px;
height: 100px;
margin: 10px;
line-height: 100px;
color: white;
font-weight: bold;
font-size: 2em;
text-align: center;
}
<ul class="flex-container wrap wrap-1">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
<li class="flex-item">6</li>
<li class="flex-item">7</li>
<li class="flex-item">8</li>
</ul>
<ul class="flex-container wrap wrap-2">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
<li class="flex-item">6</li>
<li class="flex-item">7</li>
<li class="flex-item">8</li>
</ul>
【问题讨论】:
-
@TemaniAfif 谢谢,我在旅行中从未遇到过那个帖子。我将介绍每个链接的解决方案。希望我能找到至少一个适合我需要的。