[英]100% total width for flex items in flex container, with gap inbetween
我正在尝试使用 flex-wrap 将元素定位在 flexbox 中,中间有间隙
理想情况下,应该显示的方式是:
最终结果应该是这样的:
.container { max-width: 200px; width: 200px; display: flex; flex-wrap: wrap; gap: 12px; padding: 0 12px 0 12px; } .item1 { width:33%; height: 200px; background-color: red; } .item2 { width:66%; height: 200px; background-color: green; } .item3 { width: 100%; height: 200px; background-color: blue; }
<div class="container"> <div class="item3"></div> <div class="item1"></div> <div class="item2"></div> </div>
我添加了一个 flex-direction: row,删除了填充并为宽度添加了 calc 函数,并将 66% 增加到 67% 以创建 100% 的总数。
.container { max-width: 200px; width: 200px; display: flex; flex-direction: row; flex-wrap: wrap; gap: 12px; } .item1 { width: calc(33% - 6px); height: 200px; background-color: red; } .item2 { width:calc(67% - 6px); height: 200px; background-color: green; } .item3 { width: 100%; height: 200px; background-color: blue; }
<div class="container"> <div class="item3"></div> <div class="item1"></div> <div class="item2"></div> </div>
您可以使用flex-basis
和flex-grow
而不是width
。 看下面的例子...
.container { max-width: 200px; width: 200px; display: flex; flex-wrap: wrap; gap: 12px; padding: 0 12px 0 12px; } .item1 { flex-basis: 33%; height: 200px; background-color: red; } .item2 { flex-basis: 60%; /* Reduce this value abit and allow to auto grow */ flex-grow: 1; /* Last item will fill up the remaining space */ height: 200px; background-color: green; } .item3 { flex-basis: 100%; height: 200px; background-color: blue; }
<div class="container"> <div class="item3"></div> <div class="item1"></div> <div class="item2"></div> </div>
这是@Ben 变体,但改进了计算
.container { --gap: 12px; max-width: 200px; width: 200px; display: flex; flex-direction: row; flex-wrap: wrap; gap: var(--gap); // better use like veriable, you can edit it one time in all plays together } .item { height: 200px; // we have pattern, we don't need repeat it } .item1 { width: calc(33.33% - var(--gap) / 2); // improve calculation background-color: red; } .item2 { width: calc(66.66% - var(--gap) / 2);// improve calculation background-color: green; } .item3 { width: 100%; background-color: blue; }
<div class="container"> <div class="item item3"></div> <div class="item item1"></div> <div class="item item2"></div> </div>
这是一个不需要大量代码和麻烦的 CSS 网格用例:
.container { max-width: 200px; display: grid; grid-template-columns: 1fr 2fr; grid-auto-rows:200px; gap: 12px; } .item1 { background-color: red; } .item2 { background-color: green; } .item3 { grid-column: 1/-1; background-color: blue; }
<div class="container"> <div class="item3"></div> <div class="item1"></div> <div class="item2"></div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.