inline-block元素因基线对齐而造成上浮的问题
假设我需要实现将三个块级元素并排对齐的如下效果:
代码如下:
1 <!DOCTYPE html> 2 <html lang="en-US"> 3 <head> 4 <style> 5 .container { 6 display: inline-block; 7 margin: 15px; 8 padding: 5px; 9 width: 200px; 10 height: 200px; 11 border: 1px solid black; 12 } 13 </style> 14 </head> 15 16 <body> 17 18 <div style="margin: 200px;"> 19 <div class="container"> 20 <h2>Title</h2> 21 <p>One One One One</p> 22 </div> 23 24 <div class="container"> 25 <h2>Title</h2> 26 <p>Two Two Two Two</p> 27 </div> 28 29 <div class="container"> 30 <h2>Title</h2> 31 <p>Three Three Three Three</p> 32 </div> 33 </div> 34 35 </body> 36 </html>
然而,如果当某个div块中没有内容时,就会发生该div块上浮无法对齐的情况:
造成这种现象的原因在于:行内元素和替换元素(如img、input、textarea等)会有个称做 基线 的东西;基线位于文字的最底部。如果块状行内元素(inline-block)中无文本内容的时候,其基线就会自动移至元素的最底部。另外,图片以及非替换元素的基线也是为元素最底部的。
上述元素都是以这个基线作为垂直对齐的默认参照的,那么 块状行内元素无法对齐的原因就很容易理解了;看下面几个例子:
既然这种情况是由元素以基线对齐才导致的,那么 只要设置元素的垂直对齐方式为别的就可以了;即使用vertical-align属性,该属性的参数如图:
比如为块状行内元素引入样式 1 vertical-align: top; 后,便可以了:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)