html - 孤立的内联 div
问题描述
我有一系列内联块 div,可以根据浏览器在给定时间的宽度换行到第二行。这是一个小提琴示例。例如,它可能看起来像这样:
但是,如果视口具有一定的宽度,则它的下一行可能只有一个孤立的内联块:
是否有一种 CSS 方法本质上是某种形式的“孤儿控制”(CSSorphan
似乎不适用于这种情况),所以如果第二行的元素少于一定数量,它会包装更多他们在那儿把事情弄平?
.container {
width: 100%;
}
.item {
display: inline-block;
width: 50px;
background-color: blue;
}
<div class="container">
<div class="item">
Item 1
</div>
<div class="item">
Item 2
</div>
<div class="item">
Item 3
</div>
<div class="item">
Item 4
</div>
<div class="item">
Item 5
</div>
<div class="item">
Item 6
</div>
<div class="item">
Item 7
</div>
</div>
解决方案
这是一个使用 CSS 网格的想法,其中诀窍是确保您的 div 的宽度表示为固定数量的倍数,以确保您永远不会有孤立元素。
.wrapper {
--w: 100px; /* width of one item */
display: grid;
grid-template-columns: repeat(auto-fit, calc(2*var(--w))); /* the item will break two by two*/
justify-content:center;
}
.container {
grid-column: 1/-1;
display:flex;
flex-wrap:wrap;
justify-content:center;
}
.item {
width: calc(var(--w) - 10px);
margin: 5px;
}
/* irrelevant styles */
.container {
counter-reset: num;
}
.item {
height: 150px;
background-color: blue;
color: #fff;
}
.item::before {
color: #fff;
content: attr(class) " " counter(num);
counter-increment: num;
}
<div class="wrapper">
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
如果我们使用3
.wrapper {
--w: 100px; /* width of one item */
display: grid;
grid-template-columns: repeat(auto-fit, calc(3*var(--w)));
justify-content:center;
}
.container {
grid-column: 1/-1;
display:flex;
flex-wrap:wrap;
justify-content:center;
}
.item {
width: calc(var(--w) - 10px);
margin: 5px;
}
/* irrelevant styles */
.container {
counter-reset: num;
}
.item {
height: 150px;
background-color: blue;
color: #fff;
}
.item::before {
color: #fff;
content: attr(class) " " counter(num);
counter-increment: num;
}
<div class="wrapper">
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
推荐阅读
- c - 让 Eclipse 识别 Makefile 中定义的符号
- java - Java GUI 打开一个新的 JFrame
- java - 等待设备获取位置数据
- angular - 如何使用@ngrx/store 和@ngrx/entity 嵌套延迟加载功能模块的状态?
- javascript - 根据用户正在查看的 ID/类别更改文本
- docker - 如何保护 Docker 中的服务器隧道请求?
- swift - 在地图上做手势时如何添加带有图像的图钉
- python - BeautifulSoup :用 soup.get_text 插入换行符
- javascript - DYMO LabelWriter 获取打印回调
- automated-tests - 如何组合使用不同运行器和平台的自动化测试?