参考资料:

  “display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落、错位”的原因及解决方法;

正文:

  场景:两个 div 排在一行上,各有固定宽高,其中有一个 div 内部有文字和排版等其他填充;两个 div 杂七杂八的宽度加起来远小于 father 宽度。

  拿到设计图之后,略想了一下,这不 so easy 么,既然有足够的宽度空间,那不就是随意发挥么:两 son 变 inline-block,那个有内容的 div 内或 padding ,或 flex,大致弄个上下等距不就 ok  了么,正好前面的人用 table-cell 来垂直居中,正好可以试试。然而事实证明太 naive 了,inline-block 中就藏了一个坑。

  

  首先是思路中的效果:

.container {
width: 900px;
height: 300px;
background-color: #eee;
margin: 100px auto;
} .inbox {
display: inline-block;
width: 400px;
height: 100px;
background-color: #7b7f88;
} <div class="container">
<div class="inbox"></div>
<div class="inbox"></div>
</div>

  很快啊,上面没什么问题(因为父元素的宽度足够,两个子元素之间的间隙可以忽略,当然这里也会出现隐藏坑,后叙)。于是很开心地去填充内容了,dom 结构变成:

<div class="container">
<div class="inbox"></div>
<div class="inbox">
<div>
<h2>55</h2>
</div>
</div>
</div>

  愉快地 ctrl + s 之后 F5,然后就懵逼了,这不对啊,怎么成这样了,刚才不还好好的么,就加了句话???

  于是经过翻山越岭地 Google baidu 之后,找到了参考中的资料:css 有个属性 vertical-align,它只在 display为 inline 或者 inline-block 的情况下起作用,默认值是 baseline。这意味着把元素设置成 inline(-block) 的时候,内部的文字会按照基线对齐,这也是为什么用尺子量,“55” 正好切了前一个 inbox 的 bottom。

  那解决办法就简单了,每个 inbox 设置 vertical-aligh: top(如果父元素的高度是撑开的话,设置成middle、bottom、text-bottom、text-top 都可以),就可以回归思路,如下图:

其他:

  在第一张图我们也看到, inline-block 的盒子之间是存在一点间隙的,这个问题和 HTML 的结构有关。正如上面我们贴的代码,两个 inbox 之间有一个换行,而浏览器在解释的时候遇到 inline(-block) 会把这个换行符解释成一个空白文本节点,这在视觉上就出现了间隙。解决办法有很多,贴两个常见的:

  1. 代码写一行上,不过不利于维护;

  2.父元素设置 font-size: 0,子元素重新设置字体大小;

各有优缺点,按需取用。

css - inline-block 盒子下的内容文字错位问题的更多相关文章

  1. 这些HTML、CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML、CSS、盒子模型、内容布局)

    这些HTML.CSS知识点,面试和平时开发都需要 No1-No4   系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) ...

  2. web前端学习(三)css学习笔记部分(7)-- 文字和字体相关样式、盒子相关样式、背景与边框相关样式

    12.  文字和字体相关样式 12.1  CSS3 给文字添加阴影 使用 text-shadow 属性给页面上的文字添加阴影效果,text-shadow 属性是在CSS2中定义的,在 CSS2.1 中 ...

  3. 纯css实现同一页面下选择之后更换内容效果

    实现效果为如下:在同一页面下,当我选中输入手机号时,出现手机号输入框,当我选中输入验证码时,出现验证码输入框,当我选中设置密码时,出现密码框 在这里有一个小技巧,就是  1.对下面的输入框设置同样的样 ...

  4. CSS 概念 Block Inline Containing block

    Block 元素 包括 "block-level box," "block container box," and "block box" ...

  5. 深度理解div+css布局嵌套盒子

    1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CS ...

  6. CSS学习摘要-盒子模型

    注:全文摘要自网络开发者网站,当然间隔也会整理一些思路和格式排版添加进去. CSS框模型(译者注:也被称为"盒模型")是网页布局的基础 --每个元素被表示为一个矩形的方框,框的内容 ...

  7. [19/06/06-星期四] CSS基础_盒子模型

    一.盒子模型(框模型.盒模型) CSS处理网页时,它认为每个元素都在一个不可见的矩形盒子里. 为什么想象成盒子模型?因为把所有元素想象成盒子,那么我们对网页的布局就相当于摆放盒子.我们只需要把相应的盒 ...

  8. display:inline block inline-block 的区别

    原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...

  9. Css之导航栏下拉菜单

    Css: /*下拉菜单学习-2017.12.17 20:17 added by ldb*/ ul{ list-style-type:none; margin:; padding:; overflow: ...

随机推荐

  1. java 面向对象概述, 函数解析

    函数:class FunctionDemo { public static void main(String[] args) { /* int x = 4; System.out.println(x* ...

  2. C语言程序设计|05

    问题 回答 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9772 我在 ...

  3. Tensorflow函数——tf.set_random_seed(seed)

    设置图级随机seed. 依赖于随机seed的操作实际上从两个seed中获取:图级和操作级seed. 这将设置图级别的seed. 其与操作级seed的相互作用如下: 1.如果没有设置图形级别和操作see ...

  4. 离群点检测(Novelty Detection, Outlier Detenction)

    适合问题: 对于无标签的数据, 又想找出坏用户,完成业务目标. 参考: https://scikit-learn.org/stable/modules/outlier_detection.html 算 ...

  5. 吴裕雄--天生自然Linux操作系统:Linux 简介

    Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 PO ...

  6. pycharm运行过程中,出现python已停止工作的对话框的解决办法

    在Windows7的情况下,在运行中输入“Regedit”并执行,使用注册表编辑器. 依次定位到HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows ...

  7. liunx常用命令笔记

    安装软件教程 linux安装java:https://www.cnblogs.com/lamp01/p/8932740.html linux安装mysql:https://www.cnblogs.co ...

  8. c++语法(2)

    #include<iostream> #include<windows.h> using namespace std; class Parents { public: virt ...

  9. Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改

    这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...

  10. 关于mysql数据库连接异常处理

    tomcat启动错误日志关键信息: 28-Aug-2019 14:22:55.014 SEVERE [localhost-startStop-1] org.apache.catalina.core.C ...