原因:

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

img出现的空白就是baseline和bottom之间的这段距离;即使只有图片没有文字,只要是 inline 的图片这段空白都会存在。

img 标签 是inline 元素, inline元素默认是baseline对齐的。 当baseline对齐的时候,baseline和bottom之间有段距离,就是出现的空白;

所以直接设置 vertical-align的值都可以避免这种情况出现。

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

如果没有设置 line-height,line-height 的默认值是基于 font-size 的,视渲染引擎有所不同,但一般是乘以一个系数(比如1.2)。因此,在没有设置 line-height 的情况下把 font-size 设为0也可以达到同样的效果。当然,这样做的后果就是不能图文混排了。

解决方法:

一:设置vertical-align;

img{
vertical-align : middle;
}

二:定义img的父容器的字体大小为0;

.main{ font-size : 0; }

三:把图片设置为块级元素;

img{
display : block;
}

参考::

http://www.xiabingbao.com/css/2015/10/12/css-img-block
https://segmentfault.com/q/1010000000694663
https://www.zhihu.com/question/21558138

<img>元素底部为何有空白?的更多相关文章

  1. <img>元素底部为何有空白及其解决方案

    一.为什么<img>元素底部会有空白? 要理解这个问题,首先要弄明白CSS对于 display: inline 元素的 vertical-align 各个值的含义.vertical-ali ...

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

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

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

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

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

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

  5. 关于img底部空白

    <img>元素底部为何有空白? 问题: 最近听网课遇到这样一个问题,先po出代码如下: <!--html--> <div class="top"> ...

  6. CSS Bugs 解决方案

    说明:本文档兼容性测试基础环境为:windows系统:IE6-IE10, Firefox6.0, Chrome13.0, Safari5.1, Opera11.51 Bugs及解决方案列表(以下实例默 ...

  7. 浏览器css bug及bug解决方法

    Bugs及解决方案列表(以下实例默认运行环境都为Standard mode): 如何在IE6及更早浏览器中定义小高度的容器? 方法: #test{overflow:hidden;height:1px; ...

  8. Bugs及解决方案列表

    Bugs及解决方案列表(以下实例默认运行环境都为Standard mode): 如何在IE6及更早浏览器中定义小高度的容器? 方法: #test{overflow:hidden;height:1px; ...

  9. CSS常见BUG

    CSS Hack IE条件注释: 所有IE:<!--[if IE]> css code <![endif]--> IE6以上:<!--[if gt IE 6]> c ...

随机推荐

  1. 0c-35-自动释放池使用注意

    .autorelease使用注意 )并不是放到自动释放池中,都会自动加入到自动释放池 1.1) 因为没有调用autorelease方法,所以对象没有加入到自动释放池. int main(){ @aut ...

  2. Android概览

    1.1         Android的开发缘由 早起的移动电话单单只具有手机的功能,并没有追求更多的追求功能和游戏娱乐.而在诺基亚提供的“贪吃蛇”游戏集成获得巨大成功的时候,手机制造商们才意识到手机 ...

  3. Apache的编译安装error: APR not found. Please read the documentation

    提示configure: error: APR not found. Please read the documentation. 经网上查阅资料才知道这是Apache的关联软件 在apr.apach ...

  4. C#采用Winform实现类似Android的Listener

    本文实例讲述了C#采用Winform实现类似Android下Listener的方法.非常实用的一个技巧.具体实现方法如下: 首先是一个ICallBackListener接口,里面要写上你需要Liste ...

  5. Asp.Net 之 母版页中对控件ID的处理

    一.问题提出 由于总体排版和设计的需要,我们往往创建母版页来实现整个网站的统一性,最近我由于统一性的需要,把原来整个项目单独的页面全部套用了母版页.但是出现了一系列失效错误. 二. 抽象模型 由于整个 ...

  6. 跨平台网络库(采用C++ 11)

    I:跨平台设计基础 在windows下使用0字节的WSARecv/WSASend(读写)作为读写检测,将IOCP作为一个通知模型,而"抛弃"它的异步模型. 即:把它当作epoll来 ...

  7. ZBarSDK扫描二维码

    1:如果报引用文件错误的话需要在设置一下:project->Build settings->build active architecture only选项设置为No.Valid Arch ...

  8. 存储过程中的where in实现

    在项目中使用Npoco时发现where in查询总是不能起作用.寻觅了许久终于找到解决方案,特此记录下: ) Set @p='CoreRole,CorePassword,CoreOnlineUser' ...

  9. Gradle实战:发布aar包到maven仓库

    查看原文:http://blog.csdn.net/u010818425/article/details/52441711 Gradle实战系列文章: <Gradle基本知识点与常用配置> ...

  10. iOS webview加载html自定义选项框选词

    项目要求:webview加载html网址,内容为英文文本,需要获取文本上的单词 这个是最终效果图: 思路是先实现自定义的选项框(不带系统选项)再获取到滑选的单词: 实现的步骤: 首先是替换掉系统长按出 ...