困然许久的vertical-aligin,间隙的出现并不是bug,!!!!

最近学习一个html,出现一个奇怪的现象,话不多说先贴代码。

`<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<style>
*{
    margin:0;
    padding:0px;
        font-size: 26px;
        line-height: 26px;
}
div{
    width: 300px;
    height: 40px;
    background: pink;
    display: inline-block;
}
</style>
<body>

    <div class="one"></div>
    <div class="two"></div><br>
    <div class="three"></div>
    <br>
    <div class="three"></div>

</body>
</html>`

----------

这是代码。。。

当初认为由于设置成了line-blcok之后,换行和空格都被解析造成的,然是后来已测试,发现根本不是这个原因造成的,最近经过自己的苦思冥想,查阅资料,竟然发现是vertical-align搞得鬼。

现在我来解释下原因,不过要明白的话,需要了解行高,基线等概念
我先在举几个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<style>
*{
    margin:0;
    padding:0px;
        font-size: 26px;
        line-height: 26px;
}
div{
    width: 300px;
    height: 40px;
    background: pink;
    display: inline-block;
}
</style>
<body>

    <div class="one"></div>
    <div class="two"></div><br>
    x我<div class="three"></div>
    <br>
    <div class="three"></div>

</body>
</html>

效果:

可能大家没注意到:这个现象已经说明了原因,现在我来分下下:
**

1. 了解x;我们知道x的底部是基线,但是根据分析,基线下面应该有底线,底线下面有一半的行高,

2.我们可以看到x是和div垂直平齐的,这个也是google浏览器默认的文本以基线居中,但是基线下面还有到底线的距离和半个行高。因此为了容下字体,下面的div需要向下移动  基线到底线的距离+一半的行高
3.在google浏览器中,默认字体大小16px,ling-height是18px,我测量他们的缝隙是3px,就可以知道他们一半的行高是1px,基线到底线的距离是2px,
总结:这个就是出现缝隙的原因所在了。   

**
解决办法:

1.浮动。因为浮动不属于行内元素了。
2.改变vertical-align的对齐方式,适应top,和bottom可以消除缝隙,
注意:是用text_top 和text_bottom任然会出现缝隙但是比之前小一点,因为他们是跟字体对齐,换句话说,他们没有基线到底线的距离,只有一半行高的距离,所以缝隙会变小。

原文地址:https://www.cnblogs.com/baimeishaoxia/p/12578449.html

时间: 2024-07-30 11:29:02

困然许久的vertical-aligin,间隙的出现并不是bug,!!!!的相关文章

零点四六 (一篇躺在桌面许久的文字)

这个点,本是缩在被窝,做着美梦的时候 我却什么都没穿,坐在电脑前面故作矫情的发着牢骚,只因热水器烧水的时候忘了加水,兴冲冲的进去,冰冰凉的出来 有个时候当你想去做某件事的时候,发现前奏的事情却根本还是无从说起 被网络,游戏,香烟,操蛋的生活鞭笞得体无完肤的我,思想也渐渐空洞,过着每天不知所谓的忙碌的生活,行尸走肉 一把椅子,一本“初中生”,合适的阳光和位置,一晃就是一下午的时光似乎早已离我远去,仿佛都在怀疑这份记忆的真实 又是一年中的冬天,天气依旧的寒冷,嘴上说着不穿秋裤,但是双腿却是老实的发抖

用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量.<s:iterator>标签有一个value属性,用来存放在Action类的方法中存数据的list集合,还有一个id,好像是说指定集合的索引的意思,就是给list集合遍历出来的每个对象加上一个数字标签,反正我是这么理解的,没用过.还有一个很重要,就是var变量,我在s:iterator按ctr

期待许久的事情终于发生-微软收购Xamarin

刚在VS推送的新闻中看到了醒目的标题:Microsoft to acquire Xamarin and empower more developers to build apps on any device,来自微软云端与企业部门执行副总裁Scot Guthrie的博客.原文链接:http://blogs.microsoft.com/blog/2016/02/24/microsoft-to-acquire-xamarin-and-empower-more-developers-to-build-

【阔别许久的博】【我要开始攻数学和几何啦】【高精度取模+同余模定理,*】POJ 2365 The Embarrassed Cryptographer

题意:给出一大数K(4 <= K <= 10^100)与一整数L(2 <= L <= 106),K为两个素数的乘积(The cryptographic keys are created from the product of two primes) 问构成K的最小素数是否绝对小于L,若是,则输出BAD p,p为最小素数,否则输出GOOD; 分析:从小到大枚举1~10^6内的素数p,while(p<L)时,判断K是否能被p整除,若能则证明构成K的最小素数绝对小于L,反之则大于L

记录一个蛋疼许久的问题和c语言的一个不太好的地方

在学习的过程中,发现了一个感觉c语言设计中不太好的地方,就是当free内存失败的时候.我造成的错误是因为动态内存越界了,编译器却把free()函数报错,简直感觉有些不能忍受.应该在设计的时候第一时间将问题暴露在那个越界了的地方,否则会让人莫名其妙,难以找到错误,为此浪费时间和精力. 另一个是关于txt文件的读取问题,一我这次学了个乖,每次操作的时候,务必记住了,当前的txt文件是什么编码,否则出现了错误就让人有些摸不着头脑,完全影响了学习的心情.以后注意不再犯了.仅作一个记录.

获得其他程序弹出菜单的内容(一个困扰许久的问题o(╯□╰)o)

刚开始到现在公司的时候接到一个任务:开发一个activex控件,自动操作本地exe程序,当时遇到弹出菜单无法获取的问题,还好不影响,最近又遇到这个问题,绕不过去了,于是昨天花了一个上午百度了个遍,总算解决了...网上也有人遇到类似的问题,但是都没人给出一个完整解决方案来,所以记录下来,以备后用. 核心代码:windows系统其实只有一个弹出菜单,类型为#32768,但是FindWindow获取的是窗口句柄,需要发送MN_GETHMENU 0x01E1消息转换成菜单句柄,然后通过菜单的API进行其

闪念-许久未来一切没变

好久好久没来逛社区了,前几天有空登录进来看看,好多以前的老朋友都还在,甚是欣慰.有种亲切的感觉,时间真的很快,差不多有3-4年没来玩社区了.经历了两家互联网行业级Top3的公司一度没有时间逛社区,玩社区交流. 没日没夜的工作加班7X24的OnCall(几乎现在已经习惯,期间挤时间看完大小102本书),锻炼成的别人眼中的铜墙铁壁,攻坚克难的打手.辛苦虽然辛苦,但是心态完全变了,迎来了质的改变,没有了抱怨. 经历的越多看的越开,人生越成熟.经历了亲人的离别,孩子的摧残,老婆的抱怨,生活的磨练.似乎把

沉寂许久,来一个工具——supervisor

注意由于supervisor不能监控后台程序,所以command执行的命令都需要放前台执行,比如nginx:command = /usr/local/bin/nginx -g 'daemon off;' 说下这个工具的好处:管理你的进程,异常终止自动重启服务进程机器关机,开机也自动启动服务进程集中管理,可以批量重启服务进程安装supervisor yum install epel-release yum install -y supervisor systemctl enable supervi

Python程序员段位自测:奋斗许久,你是青铜还是王者?

Python的使用场景实在太丰富,从入门编写各种小程序,到爬虫.到全栈.到自动化.到大数据.到AI,各式各样的场景中都能看见Pthon的身影.这样一门拥有光明前景的语言,他的使用者应该如何划分段位呢? 青铜 对不起,我只能算是卧底. Python的一大特点是入门简单,但这并不意味着你可以轻松入门.我们在工作和生活中都可以见到这样的人,初步掌握了Python语法,但高级技巧和编程思想几乎为0,常见于接触编程两三个月的初学者.刚刚玩转PyCharm,搞懂了变量.常量.数据类型,会写循环.会调函数,但