
使用display: inline-block和vertical-align: middle无法实现多行文本垂直水平居中,其原因在于HTML规范中块级元素内部生成的匿名块级盒子(幽灵节点)。
浏览器会在块级元素(例如div)内为行内元素创建幽灵节点来分配空间。这个幽灵节点的line-height会继承父容器的line-height。
在示例代码中,.parent元素设置了line-height: 100px,导致幽灵节点的基线与.parent元素的基线对齐,而不是child元素的基线对齐。 vertical-align: middle需要child元素的line-height为normal才能生效,因为child元素被设置为display: inline-block,本质上仍然是块级元素。
解决方法:
line-height: 避免父元素的line-height影响幽灵节点的基线。line-height为normal: 确保vertical-align: middle能够正确计算子元素的基线。修正后的CSS代码应如下所示,并注意移除不必要的meta标签,简化代码:
<code class="html"><div class="parent">
<div class="child">
测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例测试示例
</div>
</div>
<style>
.parent {
height: 100px;
background-color: aqua;
text-align: center;
}
.child {
color: #fff;
background-color: blueviolet;
vertical-align: middle;
line-height: normal;
display: inline-block;
}
</style></code>通过以上调整,可以更有效地实现多行文本的垂直水平居中。 需要注意的是,即使做了这些调整,如果文本内容过长,也可能无法完美居中,可能需要考虑其他布局方案。
以上就是使用display:inline-block和vertical-align:middle为何无法实现多行文本垂直水平居中?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号