line-height学习

1、本文计划写一下两点,深入理解CSS机制:line-height与vertical-align;BFC

2、一行内容,如果不设高度,则line-height撑起高度。如果没有设置line-height则内容本身的高度为默认line-height。一行中最高的line-height为本行的line-height

3、测试代码如下:

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <title>research</title>
 5 <style>
 6 body{background-color:#f9f0f2;}
 7 .wrap{1000px;height:800px;margin:80px auto;background-color:#fff;}
 8 .box{background-color:#D5F4FF;text-align:center;}
 9 .box img{vertical-align:middle;}
10 .box span{}
11 </style>
12 </head>
13 <body>
14 <div class="wrap">
15   <div class="box">adsfaggsdfasdfasdfkkasdlfl<br><img src="road.png"><img src="h1.png"><img src="1.png"><span style="vertical-align:middle;">xxxyyx食品经营许可证查询xxxxyyxx</span>xxxx<img src="2.png"><br>nihaenxiaozhanga </div>
16 </div>
17 </body>
18 </html>
View Code

注意最后的四个x,那是用来确认本段的基线位置,xxxx底部即为本段基线。

可见图片与文字在设置vertical-align:middle后表现并不完全相同。图片是把自己与基准文字中部对齐;文字是把自己与基线对齐。

4、去掉文字图片的vertical-align:middle

此时文字图片按默认的baseline方式对齐,大致一看没有问题,但图片下方其实是有空白的,空白大小应该为本行font-size大小的1/3,本行的低端是在汉字的低端(以前我写的网页就有这个问题,不过没仔细研究)

5、将文字、图片设置vertical-align:bottom

vertical-align:bottom在w3school看到的解释是:把元素的顶端与行中最低的元素的顶端对齐

测试发现是不正确的,我的表达是把元素的低端与基线元素的低端对齐。注意本张图片的左右尖角有xxx并没有对齐,这个是因为他们并不是按基线对齐的,x下面的空间也是被x占用的

6、一行中,每个元素都会有个line-height值,但float:left则会破坏行高属性,导致元素行高变为0.创建块级格式作用域,修复了float为0的高度。也就是表现为清除浮动了。

原文地址:https://www.cnblogs.com/ward/p/5053532.html