【发布时间】:2020-02-01 09:28:18
【问题描述】:
我有一些我想在 flex-box 中排列的项目,以便它们可以包裹在较小的屏幕上。 flex-wrap:wrap; 可以做到这一点。
当它们“展开”(即宽屏幕)时,我希望内容元素之间有一条垂直线。当屏幕/容器变窄时,我希望它们换行到下一行并且没有有边框。
我希望整个内容都位于页面的中心。并不要求所有内容元素具有相同的宽度。
类似这样的:
我见过Smart borders between flex items – the dumb way,但是当 flex-box 容器在页面中“浮动”时这不起作用,因为它依赖于隐藏的 -1px 边距来隐藏备用边框,这意味着项目必须一直拉伸到左边距以隐藏它们的边距。对于居中的框,这并不总是正确的。
/* Based on https://codepen.io/thatemil/pen/MrrJyZ
* used by
* https://thatemil.com/blog/2018/01/08/direction-independent-borders-this-is-stupid/
*/
.container {
display: flex;
flex-wrap: wrap;
overflow: hidden;
justify-content: center;
}
.item {
border-left: 1px solid red;
margin-left: -1px;
padding: 5px;
}
Short (unwrapped):
<div class="container">
<div class="item" style="background-color:pink;">foobar</div>
<div class="item" style="background-color:grey;">quux</div>
</div>
Long (wrapping):
<div class="container">
<div class="item" style="background-color:pink;">foobar foobar foobar foobar foobar foobar</div>
<div class="item" style="background-color:grey;">quux quux quux quux quux quux quux</div>
</div>
【问题讨论】:
标签: html css responsive-design flexbox