html - 为什么这些 inline-block 元素在顶部和底部保留空白?
问题描述
我有一个容器 div,里面有很多子 div。我希望子 div 彼此相邻显示,并在容器宽度不够时进行换行,以便制作网格。
容器具有固定的宽度和高度,子 div 也是如此。这些设置为display: inline-block
,并且它们按预期包装。但是,子 div 的顶部和底部会显示一个空格:
代码如下:
.container {
border: 1px solid #000000;
margin: 0 auto;
}
.child {
display: inline-block;
width: 6px;
height: 6px;
border: 1px solid #EEEEEE;
}
...
<div class="container">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
...
</div>
渲染的输出是这样的:
我也希望它们垂直地贴在一起。
如何在不更改 DOM 的情况下使用 CSS 完成此操作?
解决方案
额外的垂直间距是由行高(浏览器为文本行之间的前导保留的空间)引起的。line-height: 0
您可以通过添加到您的.container
规则来删除它。
.container {
border: 1px solid #000000;
margin: 0 auto;
line-height: 0;
}
.child {
display: inline-block;
width: 6px;
height: 6px;
border: 1px solid #EEEEEE;
}
<div class="container">
<div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div>
</div>
(font-size: 0
也可以,但不太理想,因为如果您的标记更改为包含任何内容,它最终会使文本不可读;至少对于 line-height ,它可以立即在界面中看到存在问题。)
推荐阅读
- c++ - 连接 ESP-idf 中的两个字符串
- ejs - 我可以根据变量的存在有条件地在 EJS 中渲染吗?
- kivy - 旋转后不同位置的 Kivy Image 和 Widget
- optimization - 二进制和整数约束的乘积 - 线性规划
- reactjs - 如何创建具有特定范围的 reactjs 应用程序
- typescript - switchMap 给出 OperatorFunction
' 不可赋值 - reactjs - 更改主题(组件重新渲染)后反应谷歌地图不会更新样式?
- r - 如何按年份创建百分比列并输入 R
- wpf - 子菜单弹出背景透明
- vue.js - 生产构建Vue js,无法访问构建文件夹中的图像文件