假设我需要实现将三个块级元素并排对齐的如下效果:

代码如下:

 <!DOCTYPE html>
<html lang="en-US">
<head>
<style>
.container {
display: inline-block;
margin: 15px;
padding: 5px;
width: 200px;
height: 200px;
border: 1px solid black;
}
</style>
</head> <body> <div style="margin: 200px;">
<div class="container">
<h2>Title</h2>
<p>One One One One</p>
</div> <div class="container">
<h2>Title</h2>
<p>Two Two Two Two</p>
</div> <div class="container">
<h2>Title</h2>
<p>Three Three Three Three</p>
</div>
</div> </body>
</html>

  然而,如果当某个div块中没有内容时,就会发生该div块上浮无法对齐的情况:

  造成这种现象的原因在于:行内元素和替换元素(如img、input、textarea等)会有个称做 基线 的东西;基线位于文字的最底部。如果块状行内元素(inline-block)中无文本内容的时候,其基线就会自动移至元素的最底部。另外,图片以及非替换元素的基线也是为元素最底部的。

上述元素都是以这个基线作为垂直对齐的默认参照的,那么 块状行内元素无法对齐的原因就很容易理解了;看下面几个例子:

  既然这种情况是由元素以基线对齐才导致的,那么 只要设置元素的垂直对齐方式为别的就可以了;即使用vertical-align属性,该属性的参数如图:

  比如为块状行内元素引入样式  vertical-align: top; 后,便可以了:

inline-block元素因基线对齐而造成上浮的问题的更多相关文章

  1. CSS3如何去除 inline block 元素之间多出的空格

    display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...

  2. 多个inline元素、block元素、inline-block元素在父容器中的换行情况

    1.首先看inine元素的换行情况 <style> *{padding:0;margin:0} div.wrap{width:200px;height:200px;border:1px s ...

  3. 当inline元素包裹block元素时会发生什么

    经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a&g ...

  4. inline元素、block元素、inline-block元素

    inline 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行,直到该行排满. block 块级元素:是可以控制宽和高.margin等,并且会换行.块级对象元素会单独占一行显示, ...

  5. block元素和inline元素的特点

    一.block元素的特点 1.处于常规流中时,如果width没有设置,会自动填充满父容器 2.可以设置height/width及margin/padding 3.处于常规流中时,布局在前后元素位置之间 ...

  6. 关于block元素和inline元素

    呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...

  7. inline元素、block元素

    inline元素 不会独占一行,相邻的行内元素会排列在同一行内,直到一行排不下才会换行 高.行高.以及外边距和内边距不可改变 宽度就是它的文字或图片的宽度,不可改变,随元素内容变化而变化 内联元素只能 ...

  8. inline,block,inline-block的区别

    display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...

  9. CSS基础 行内元素/行内块元素设置垂直对齐方式及常见使用案例

    vertical-align 属性值 效果 baseline 基线对齐 top 顶部对齐 middle 中心对齐 bottom 底部对齐 使用案例1:百度搜索框左边和右边底部没有对齐 使用vertic ...

随机推荐

  1. hihocoder offer收割编程练习赛13 D 骑士游历

    思路: 矩阵快速幂. 实现: #include <iostream> #include <cstdio> #include <vector> using names ...

  2. python的机器学习之路

    2018-04-1712:22:40 这是python依靠计算机视觉进行的ocr手写字的识别. 通过KNN训练数据 kNN 可以说是最简单的监督学习分类器了.想法也很简单,就是找出测试数据在特征空间中 ...

  3. python语言真正的奥义所在--对接32单片机

    2018-02-2720:51:24 今天晚上注定我要玩一夜这个东西,太爽了,给力! 烧写固件成功, http://blog.csdn.net/Lingdongtianxia/article/deta ...

  4. HDU_1166_敌兵布阵

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. vue组件---动态组件&异步组件

    (1)在动态组件上使用keep-alive 之前曾经在一个多标签的界面中使用 is 特性来切换不同的组件.接下来简单回顾下 <component>元素是vue 里面的一个内置组件.在里面使 ...

  6. adb 命令实用

    1.adb安装:adbinstall.bat:原理:将apk文件拖进此bat,install命令会强制(覆盖)安装apk安装包.代码如下: @echo on adb install -r % paus ...

  7. oracle中的冷热备份

    oracle有四种备份方法:冷备份.热备份.RMAN备份.逻辑备份. 其中冷备份和热备份都是用操作系统命令对oracle文件直接进行拷贝, 不同的是冷备份是把数据库关闭后再备份,备份过程中也要关闭数据 ...

  8. 「 HDU P2089 」 不要62

    和 HDOJ 3555 一样啊,只不过需要多判断个 ‘4’ 我有写 3555 直接去看那篇吧 这里只放代码 #include <iostream> #include <cstring ...

  9. Python之两个值对换

  10. Linux 复习一

    第一章 Linux简介和基本操作 一.Linux系统的来源和发展 Linux is a free Unix-type operating system originally created by Li ...