我们经常遇见图片之间出现间距的问题,从这个问题入手,总结下原理。

任何不是块级元素的可见元素都是内联元素,其表现的特性是“行布局”形式。----《CSS权威指南》

图片文字等内联元素默认的对齐方式是和它的父级的 baseline 进行对齐的,撑开高度的却是元素整体的高度(bottom line)

解决方案:

1、变成块级元素,因为只有inline 元素才会发生这个问题;

2、vertical-align 的默认属性就是 baseline ,只要设置了跟 baseline 不一样的属性,都可以避免这个问题;

3、把inline元素浮动起来,因为已经不在当前文档流中了,布局的时候自然也就不会参照这个文字去进行对齐了;

4、把父元素的文字大小设成0,既然你根据文字的基线去对齐,直接把文字设没了,这样就没法定位了。

line-height与height高度相同,为什么就上下居中了?

在默认状态下,如果没有其他因素的干扰,文本会被一个content area box包裹,它的大小有字体的大小决定,这个时候content area box的大小和line box是相同的,当设置line-height属性之后,会有如下处理:

1.获取半行间距:半行间距=(line-height-content area box(也就是字体的大小))/2。

2.然后把半行间距分别放置于content area box上下两侧,这样就获取了line box的高度尺寸。于是只要设置行高就可以产生一个高度,并且使文字居中。

如果一个元素是浮动的(float:left/right),绝对定位的(position:absolute/fixed)或者是根元素(html),那么它被称之为流外的元素(out-of-flow)。如果一个元素不是流外的元素,那么它被称之为流内的元素(in-flow)。

inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。

vertical-align的百分比值不是相对于字体大小或者其他什么属性计算的,而是相对于line-height计算的。

{line-height: 30px;vertical-align: -10%;
}// 相当于

{line-height: 30px;vertical-align: -3px;    /* = 30px * -10% */
}

原文:https://www.jb51.net/html5/518714.html

http://www.softwhy.com/article-4133-1.html

https://www.zhangxinxu.com/wordpress/2015/08/css-deep-understand-vertical-align-and-line-height/

转载于:https://www.cnblogs.com/xjy20170907/p/11499097.html

inline元素的间距问题相关推荐

  1. 前端inline元素间隙问题解决办法

    一些刚刚入门学习web前端的小伙伴在刚刚接触inline元素的时候,是不是会遇到这样一个问题,两个元素比如< span >中间总是有一个小间隙,无法去除掉,那么应该如何解决呢? 当我们给s ...

  2. 使用flex 布局让子元素 左右间距相等

    使用flex 布局让子元素 左右间距相等 效果展示 使子元素左右间距相等布局 三种方法 1.justify-content: space-evenly; 2.justify-content: spac ...

  3. html清除盒子间距,inline-block元素默认间距清除

    这次给大家带来inline-block元素默认间距清除,inline-block元素默认间距清除的注意事项有哪些,下面就是实战案例,一起来看一下. 话不多说,直接来看示例代码 .content{ le ...

  4. css a 标签上下间距_CSS实用技能:去除inline-block元素间间距的7种方法

    现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子: 两个相邻的radio之间总是多那么一点点的间距,不是margin也不是paddin ...

  5. 去除inline-block元素间间距

    根本原因:inline-block元素之间之所以有空白间距是因为空格有字体大小原因. 第一种: 把代码之间的换行空白都去掉. 例如: <div>第一个inline-block元素</ ...

  6. 在html调节元素左右间距,HTML元素间距问题

    在利用CSS布局时,经常会遇到一些没有定义间距padding.margin之类的内容,但是页面上却总会有一些不知从何而来的间距出现,下面就是我在自己的工作中遇到的一些常见情况的总结,及其消除方法. 1 ...

  7. flex布局中,元素等间距设置,包括第一个元素的左边,最后一个元素的右边,也等间距

    项目中很多地方会用到等间距排放的场景,使用flex 布局可以很方便的实现 .fu{display: flex;ustify-content: space-between; } 通过上面代码,可以实现子 ...

  8. flutter - GridView 网格布局,以及设置子元素的间距和大小

    基础的 GridView 布局 参数 说明 gridDelegate 对子元素进行修饰,由于SliverGridDelegate 是一个抽象类, 找它的实现类有 [SliverGridDelegate ...

  9. 去除inline-block元素间间距,比较靠谱的两种办法

    1.使用注释符号 1 <div><span class="1">1</span></div><!-- 2 -->< ...

最新文章

  1. SAP SD基础知识之组织结构
  2. 「Newcoder练习赛40D」小A与最大子段和
  3. 字符串操作 c语言,C语言字符串操作(示例代码)
  4. 搭建一个基于http的yum服务器
  5. 推荐!小议如何跳出魔改网络结构的火坑(完整版)
  6. struts中ModelDriven()接口
  7. 戴尔电脑正在准备自动修复_戴尔如何建立社区为开放的未来做准备
  8. (4)ZYNQ AXI4总线协议介绍
  9. pv原语模拟实现_HART协议压力变送器硬件设计及实现
  10. 蓝桥杯 省赛 杨辉三角形 python组(转)
  11. USBCAN接口卡打开失败收不到数据常见问题分析
  12. 【饭谈】为什么有的技术博文你看不懂?
  13. n的约数(数论+DFS)
  14. 无线网络经常掉线?默认网关不可用?试试这个办法
  15. Windows的截屏键
  16. SRS 代码分析【mpeg-ts解析】
  17. 计算机参数含义,电脑内存条参数各有什么含义?
  18. 三次改变世界、却被无情出局的程序员
  19. Matlab实现蚂蚁群算法
  20. 关于如何使用打码平台识别验证码

热门文章

  1. C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表
  2. 微信小程序学习笔记-1-环境及基础结构
  3. shell_之_find(查找)
  4. [笔记]远程终端API,Terminal Services Administration
  5. 九、Spring中使用@Value和@PropertySource为属性赋值
  6. SQL Server2000企业管理器在Win7中新建表错误的解决方法
  7. C# switch语句中,可以放哪些类型
  8. python 中json和字符串互相转换
  9. GROOVY简单语法实习
  10. golang(2):beego 环境搭建