html - 当我增加容器的宽度时,为什么我的列间距变小了?
问题描述
我很难理解多列布局中列间隙背后的逻辑。我在这个 Fiddle中有以下 HTML/CSS :
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
</div>
.flex-container {
height: 500px;
width: 300px;
border: 1px solid blue;
columns: 120px;
padding: 10px;
}
.flex-item {
background: OliveDrab;
padding: 5px;
width: 100px;
height: 100px;
line-height: 100px;
color: white;
text-align: center;
break-inside: avoid-column;
}
您会注意到,如果width
将容器的 300px 更改为 400px,列之间的间隙实际上会缩小。
为什么要这样做?是否可以左对齐列以使它们不会移动?CSS 列之间的固定间隙可能表明这是不可能的。
解决方案
如果您没有指定列数(列的第二个参数),那么系统将计算出可能的列数(即它采用 auto 作为列数参数)。
您已指定 120 像素的“理想”列宽,而实际项目的宽度小于该宽度。因此,系统认为您可以将 3 列放入宽度为 400px 的容器中,并相应地布置前两列。
这是来自https://developer.mozilla.org/en-US/docs/Web/CSS/column-width的一些信息
column-width CSS 属性设置多列布局中的理想列宽。容器将包含尽可能多的列,而其中任何列的宽度都不会小于 column-width 值。如果容器的宽度小于指定值,则单个列的宽度将小于声明的列宽。
如果要确保只有两列,请提供第二个参数:
columns: 120px 2;
.flex-container {
height: 500px;
width: 400px;
border: 1px solid blue;
columns: 120px 2;
padding: 10px;
}
.flex-item {
background: OliveDrab;
padding: 5px;
width: 100px;
height: 100px;
line-height: 100px;
color: white;
text-align: center;
break-inside: avoid-column;
}
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
</div>
推荐阅读
- python - 如何通过python套接字发送文件并保持其扩展名?
- office-js - 是否可以侧载脚本实验室?
- javascript - 在 webpack 中动态加载外部模块失败
- android - 注册通知渠道的最佳位置是什么?
- scala - 测试时如何在 Scala Guice 中覆盖 TypeLiteral
- javascript - Firestore 是否缓存查询结果?
- c++ - 具有 unordered_map 的相互依赖类型
- python - 如何在 python networkX 中添加具有字符串相似度分数的边并找到图的中心
- python - 如何在 Graphene-SQLAlchemy 中的子关系上使用字段参数进行查询
- java - 循环异常处理