Jas*_*ame 6 html css css3 flexbox
我在display: flex容器中沿列方向显示一些元素。
这会将容器放入堆叠视图中。
假设我有5个堆叠的元素,我需要使其中两个显示内联或Flex方向行。
无需将有问题的两个元素放入另一个div中,我可以将flex方向行应用于...
是否可以使这些元素并排放置?
.flex-column {
display: flex;
flex-direction: column;
}
.flex-column .column-item:nth-of-type(4),
.flex-column .column-item:nth-of-type(5) {
width: calc(50% - 10px);
display: inline-block;
float: left;
}
.flex-column .column-item:nth-of-type(4) {
margin-right: 20px;
}
<div class="flex-column">
<div class="column-item">a</div>
<div class="column-item">b</div>
<div class="column-item">c</div>
<div class="column-item">d</div>
<div class="column-item">e</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用 flexbox 布局相当简单。你不需要flex-direction: column.
只需flex-direction: row与flex-wrap: wrap.
然后使每个元素足够长以占据整行。
减少flex-basis共享一行的元素。
.flex-column {
display: flex;
flex-wrap: wrap;
}
.column-item {
flex: 1 0 61%; /* flex-grow, flex-shrink, flex-basis */
margin: 2px;
background-color: lightgreen;
}
.column-item:nth-of-type(4),
.column-item:nth-of-type(5) {
flex-basis: 40%;
}Run Code Online (Sandbox Code Playgroud)
<div class="flex-column">
<div class="column-item">a</div>
<div class="column-item">b</div>
<div class="column-item">c</div>
<div class="column-item">d</div>
<div class="column-item">e</div>
</div>Run Code Online (Sandbox Code Playgroud)
随着flex-grow: 1中定义的flex简写,也没有必要使用calc()。
由于flex-grow会消耗行上的可用空间,因此flex-basis只需要足够大以强制换行。在这种情况下,使用flex-basis: 61%,边距有足够的空间,但永远没有足够的空间容纳第二个项目。
使用 CSS Grid 有一个更简单、更有效的解决方案:
.flex-column {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 5px;
}
.column-item:nth-of-type(-n + 3) {
grid-column: span 2;
}
.column-item {
background-color: lightgreen;
}Run Code Online (Sandbox Code Playgroud)
<div class="flex-column">
<div class="column-item">a</div>
<div class="column-item">b</div>
<div class="column-item">c</div>
<div class="column-item">d</div>
<div class="column-item">e</div>
</div>Run Code Online (Sandbox Code Playgroud)
小智 5
我认为一旦为父级提供了该flex-direction:column;属性,就不可能了,也可以flex-wrap:wrap使用该flex-basis属性启用和控制元素的宽度。这使您可以在不更改html结构的情况下实现所需的效果。
.flex-column {
display: flex;
flex-wrap:wrap;
}
.flex-column .column-item {
flex-basis:100%;}
.flex-column .column-item:nth-of-type(4),
.flex-column .column-item:nth-of-type(5) {
flex-basis:50%;
}Run Code Online (Sandbox Code Playgroud)
<div class="flex-column">
<div class="column-item">a</div>
<div class="column-item">b</div>
<div class="column-item">c</div>
<div class="column-item">d</div>
<div class="column-item">e</div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8087 次 |
| 最近记录: |