CSS多列布局异常:用户数为奇数时<li>元素被截断
解决两列用户列表奇数用户时被截断的问题
嘿,我来帮你排查这个两列用户列表的问题!你遇到的
column-fill: balance的操作其实没找对问题根源,这个属性只是控制列的高度是否平衡,没法阻止元素被跨列拆分。具体解决方案
只需要给列表项<li>添加一个CSS属性,就能阻止它被拆分到不同列中:
.first-main-column { .first-column-window { height: 700px; background-color: #ffffff; .user-container { height: 350px; width: 100%; overflow: auto; columns: 2; column-gap: 1em; column-rule: thin solid black; h2 { font-family: "Bebas Neue"; column-span: all; } .list { ul { li { width: 80%; border-radius: 5px; margin: 0 auto; // 关键属性:阻止列表项跨列拆分 break-inside: avoid; // 兼容旧版浏览器可添加(可选) page-break-inside: avoid; } } } } .btn-container{ width: 100%; height: 350px; button { margin: 5% 0; padding: 5%; } } } }
为什么这个方法有效
break-inside: avoid会告诉浏览器:这个元素必须保持完整,不能被拆分到不同的列(或分页、区域)中。这样不管你的用户列表是奇数还是偶数个,每个<li>都会完整地显示在某一列里,再也不会出现截断的情况。
另外补充一点:你的.user-container设置了overflow: auto,如果列表项高度超过容器会出现滚动条,这个设置和截断问题不冲突,加上break-inside: avoid后,滚动时每个列表项也会保持完整。
内容的提问来源于stack exchange,提问作者tilly
相关产品推荐
相关产品推荐

