一、为什么<img>元素底部会有空白?

  要理解这个问题,首先要弄明白CSS对于 display: inline 元素的 vertical-align 各个值的含义。vertical-align 的默认值是 baseline,这是一个西文排版才有的概念。

  vertical align的有效取值为baselinesubsupertoptext-topmiddlebottomtext-bottomlength,或者是 value in percentage

  (1)Baseline:vertical-align的默认值为baseline(如果没有声明)。 图像将与文本基线处的文本对齐。

  请注意,字母会下降到基线以下(比如字母p 、q、g 下面的小尾巴)。 图像则不会与字母的最低点对齐,因为那不是基线(而是基线以下)。

  (2)Middle:垂直对齐最常见的用法是在图标大小的图像上将其设置为middle,浏览器可以很好的将图像与文本垂直对齐:

  (3)Text-bottom:与bottom不同,这个是文本的底部,下降到了最下方,图像也可以与此位置对齐:

  (4)Text-top:与文本底部相反,这个代表文本顶部,即当前字体大小的最高点。 您也可以与这个位置对齐

  (5)Top & Bottom:topbottom作用类似于text-toptext-bottom,但它们不受文本约束,而是在该行上的所有内容(如另一个图像)。 因此,如果同一行上有两个不同高度的图像,并且都大于该行上的文本,则它们的顶部(或底部)将与文本大小无关。

  (6)Sub & Super:supersub代表上标和下标,因此与这些方法对齐的元素也是一致的:

  所以,baseline 和 bottom 之间有一定的距离。实际上,inline 的图片下面那一道空白正是 baseline 和 bottom 之间的这段距离。即使只有图片没有文字,只要是 inline 的图片这段空白都会存在。

二、总结的解决方案

  1、将图片转换为块级对象可去掉下边空白

  即设置img为:display:block;

  2、设置图片的垂直对齐方式

  即设置图片的vertical-align属性为“top,text-top,bottom,text-bottom”也可以去掉下边空白。

  3、设置父对象的文字大小为0px

  即在父对象中添加一行:font-size:0;可以解决空白问题,但这也引发了新的问题,在父对象中的文字都无法显示,就算文字部分被子对象括起来,设置子对象文字大小依然可以显示,但在CSS效验的时候会提示文字过小的错误。

  4、设置图片的浮动属性也可去掉空白

  即设置img元素float,如果要实现图文混排,这种方法是很好的选择。

  5、设置父对象行高为0

  top 和 bottom 之间的值即为 line-height。假如把 line-height 设置为0,那么 baseline 与 bottom 之间的距离也变为0,那道空白也就不见了

  6、改变父对象的属性

  如果父对象的宽、高固定,图片大小随父对象而定,那么可以设置:overflow:hidden;来去掉空白

<img>元素底部为何有空白及其解决方案的更多相关文章

  1. <img>元素底部为何有空白?

    原因: 图片文字等inline元素默认是和父级元素的baseline对齐的,即:vertical-align 的默认值是 baseline:而baseline又和父级底边bottom有一定距离: im ...

  2. inline-block元素的4px空白间距解决方案

    http://www.jb51.net/css/68785.html  inline-block元素的4px空白间距解决方案 

  3. inline元素和inline-block元素的4px空白间距解决方案

    实在不想写了,要吐了,看到一篇讲的比较全的文章,直接粘链接了 inline元素和inline-block元素的4px空白间距解决方案 出自脚本之家

  4. Vue 在手机上键盘把底部菜单顶上去的解决方案

    Vue 在手机上键盘把底部菜单顶上去的解决方案 ios和安卓的键盘的区别 ios和安卓的键盘的区别弹起方式不同, ios直接弹出键盘, 不影响页面, 而安卓键盘弹起时会把页面顶起来, 这样就会把底部菜 ...

  5. img元素底部有空白间距的问题

    <div style="width:100px;height:100px"><img src="./1.jpg"></div> ...

  6. inline-block元素间距问题的几种解决方案

    不知道大家有没有碰到过设置了display:inline-block;的几个相邻元素之间有几px间距的问题,这里提供几种简单实用的解决方法,希望能够帮到大家!   方法1. 将<li>标签 ...

  7. 清除行内元素之间的HTML空白

    原文连接:Remove Whitespace Between Inline-Block Elements 原文日期: 2013年8月27日 翻译日期: 2013年8月28日 至今我还记得年轻是在IE6 ...

  8. 去掉display:inline-block元素间的多余空白

    问题:每1个带display:inline-block;属性的链接 a 水平.垂直方向都带有一定的空白 关键在于父元素定义font-size:0 去掉行内块元素水平方向空白:子元素定义vertical ...

  9. dedecmsv5.7 ueditor编辑器上传视频/修改,视频显示空白,解决方案

    dedecmsv5.7 ueditor 在上传视频之后,显示空白.其实是有视频的,就是显示空白.找了资料,记录一下. 解决方案: 找到include下面的ueditor下面的ueditor.all.j ...

随机推荐

  1. 手把手教你最简单的开源项目托管GitHub入门教程

    自从google code关闭了下载服务了之后,GitHub作为了目前最好用的免费开源项目托管站点,众多开源项目都托管在github,其中不乏著名的播放器MPC-HC. 不习惯于英文的朋友,难免少不了 ...

  2. Linux调试介绍

    1. 介绍 本文介绍了调试的一些常用函数和工具 2. 函数 用户态函数: backtrace()/backtrace_symbols() 内核态函数: dump_stack() 3. 工具 工具: g ...

  3. linux下ntp服务器搭建方法

    环境 软件:fedora14,装在virtualbox虚拟机上 硬件:x86 具体步骤 检查是否安装了ntp 运行如下命令: rpm -qa | grep ntp 如果有如下输出,表示有安装ntp 服 ...

  4. platform型设备在/dev目录下自动创建设备节点的分析【转】

    转自:http://blog.csdn.net/rockrockwu/article/details/7357648 系统启动过程中platform设备.驱动注册完毕,为什么在/dev目录下就自动创建 ...

  5. [ Centos 7 iscsi搭建 及 1台客户端同时挂载多台iscsi服务端问题 ]

    一.什么是iscsi iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千 ...

  6. Navigator与UserAgent笔记

    关于Navigator与UserAgent笔记 1.Navigator笔记 Navigator对象主要是包含有关客户端浏览器的一些信息,Navigator对象是由JavaScript runtime ...

  7. 看不到Harbor我也睡不着觉啊

    上午打球,下午陪小孩子看上海科技展,晚上搞定harbor. 完美!!!:) 参考文档: https://www.dwhd.org/20161023_110618.html http://blog.cs ...

  8. AC日记——[Sdoi2008]Cave 洞穴勘测 bzoj 2049

    2049 思路: lct模板: 代码: #include <cstdio> #include <cstring> #include <iostream> #incl ...

  9. C#实现HTML转图片(网页快照)

    有时候我们需要将网页转成图片,那么可以使用WebBrowser来生成网页快照,废话不多说,代码如下 1.网页快照帮助类(如果是BS或控制台需要引用System.Windows.Forms类库): pu ...

  10. AHOI2009中国象棋

    首先以行为阶段,根据象棋的规则,在同一行中,至多只能有两个炮,同理:在同一列中,至多只能有两个炮思考一个可以覆盖整个状态空间的dp数组:dp[i]表示到了第i行接下来我们想:某列中的炮能否通过位运算求 ...