有的时候,我们需要使独占一行的两个div能够在一行和谐共处,解决方案大概有两种:
1.为两个div均添加display:line-block属性
2.将两个div都设成浮动的元素
这篇文章将深入探讨二者的区别与联系,此外,还将会带给大家一种垂直居中的新方式
我们将以下面的代码作为演示代码,这意味着每当我们讨论一个新问题时就要把代码恢复成下面这个样子:
CSS样式:

    <style>.myContainer{width: 500px;margin: 20px auto;background-color: gray;overflow: hidden;}.div1{width: 200px;height: 100px;background-color: red;}.div2{width: 200px;height: 100px;background-color: aqua;}</style>

html内容:

<div class="myContainer"><div class="div1"></div><div class="div2"></div>
</div>
<div class="myContainer"><div class="div1"></div><div class="div2"></div>
</div>

运行后的效果:

1.最基本的区别在于中间是否有空隙

我们首先试着将前两个div都添加属性display:inline-block,后两个div都设置成左浮动。运行效果如下所示:

很显然,由于属性display:inline-block而在一行的块级元素中间会出现间隙,而浮动则不会。

2.面对不同的高度,对齐方式不同

将代码恢复成演示代码,我们将类选择器div2的height属性设置成300px,查看运行效果:

会发现在两个div的高度不同时,两种方式的对齐效果也不相同:
(1)display:inlne-block属性修饰的元素没有脱离文档流,当然会与在正常的文档流中的元素一样采取的底端对齐方式。
(2)float属性修饰的元素在一定程度上脱离了普通文档流的限制,只用考虑向某个方向浮动,所以会产生如图的效果。
使用display:inlne-block的好处在于我们可以通过一个叫做vertical-align的属性来控制两个元素的对齐方式:
(1)我们为前两个div分别添加一个属性:vertical-align:middle

<div class="myContainer"><div class="div1" style="display: inline-block;vertical-align: middle"></div><div class="div2" style="display: inline-block;vertical-align: middle"></div>
</div>

查看一下运行效果:(这里我省去了后两个浮动元素的截图)

发现div1出现在了div2的居中位置。
这里要注意,这两个元素一定都要添加上vertical-align这个属性。
当然,如果想让它们顶端对齐,把middle改成top就可以了,截图如下:

括展:垂直居中的新方式:

会思考的朋友会想到利用这种方式可以实现子div在父div内的垂直居中。原理很简单,在父div内设置两个子div:div1,div2,其中div1是我们要垂直居中的元素,div2是辅助元素。我们让div2的宽度为0,高度为父div的高度,然后将div1和div2都加上display:inline-block和vertical-align:middle。之后,便可实现垂直居中。代码如下所示(这里使用text-align:center保证水平居中):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>垂直居中的新方法</title><style>.myContainer{width: 500px;height: 300px;margin: 10px auto;background-color: gray;text-align: center;}.div1{width: 200px;height: 100px;background-color: red;display: inline-block;vertical-align: middle}.div2{width: 0;height: 100%;background-color: aqua;display: inline-block;vertical-align: middle}</style>
</head>
<body>
<div class="myContainer"><div class="div1"></div><div class="div2"></div>
</div>
</body>
</html>

效果如图所示:

4.浏览器缩放时的区别

有的时候我们需要在父div的一排内安置两个子div,二者的宽度固定为某个像素,中间空余一定距离。这样也存在有两种方案:
(1)两个子div一个向左浮动,一个向右浮动

<div class="myContainer"><div class="div1" style="float: left"></div><div class="div2" style="float: right"></div>
</div>


(2)将它们设置为display:inline-block,然后通过margin来设置两者间的距离:

<div class="myContainer">
<!--XXX为符合条件的具体值--><div class="div1" style="display: inline-block;margin-right: XXXpx"></div><div class="div2" style="display: inline-block;"></div>
</div>


这两种方式在父div的宽度为具体像素时几乎没有区别,但当父div的宽度为百分比时,则具有明显的差别:
现在我们将myContainer中的width设置为50%,查看效果,似乎也无差别,但当我们缩放浏览器时,就会发现:

不过父div的宽度一般都是固定的,最后一点大可不必担心。

总结:

display:inlne-block与浮动各有各的优缺点与灵活之处,大家在选择的时候可以结合我列举的几点综合考虑。

浮动与display:inline-block相关推荐

  1. [CSS]详解display:inline | block |inline-block的区别

    2019独角兽企业重金招聘Python工程师标准>>> [CSS]详解display:inline | block |inline-block的区别[点评网站][发布新闻][申请专栏 ...

  2. display:inline、block、inline-block

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  3. 关于css的display:flex inline block inline-block和float

    1.解释一下display的几个常用的属性值,inline , block, inline-block inline(行内元素):使元素变成行内元素,拥有行内元素的特性,即可以与其他行内元素共享一行, ...

  4. display:inline inline-block block

    块级元素:默认设置display:block的元素<div>.<h1>~<h6>.<p>.<ul>.<ol>.<li> ...

  5. display的block、none、inline属性及解释

    常会用到display对应值有block.none.inline这三个值 参数: block :块对象的默认值.用该值为对象之后添加新行.之前也添加一行. none :隐藏对象.与visibility ...

  6. display:inline、block、inline-block的区别

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...

  7. display:inline、block、inline-block的区别以及该死的ie6兼容问题

    2019独角兽企业重金招聘Python工程师标准>>> display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都 ...

  8. CSS中display:block、inline、inline-block

    display:block的特点: 1.block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. 2.block元素可以设置width,heig ...

  9. display:inline display:block

    display:inline; 元素会被显示为内联元素,元素前后没有换行符. display:block 元素将显示为块级元素,此元素前后会带有换行符. 举例: 1.display:block < ...

  10. CSS 中 display 的 block,inline,inline-block 这三个属性的区别

    基本概念 1.block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元 ...

最新文章

  1. 背包思想计算方案的总数(货币系统)
  2. apk转换ipa在线转换工具_gif转换工具
  3. 读《世界是数字的》有感 15级软工4班 李苏娴
  4. 【文本挖掘】反欺诈模糊匹配
  5. Asp.net Web.Config - 配置元素 httpCookies
  6. JDBC连接失败java.sql.SQLException: ...ClassCastException: BigInteger cannot be cast to Long
  7. PHP 基础篇 - PHP 中 DES 加解密详解
  8. c/c++面试试题(四)
  9. 通过Applescript打开终端运行py文件
  10. COM中关于使用DLL的一些知识点
  11. Notepad++一键编译运行(Python、Java、C++)
  12. 每日一词20190306——经纬度(longitude and latitude)
  13. php 网站攻击,php网站主要攻击方式
  14. js怎么判断数组是否包含另一个数组
  15. Nginx搭建文件下载服务器
  16. 当程序员工作七年之后的一点重要的总结
  17. Uva_156 Ananagrams ( map 的应用 )
  18. VMvare虚拟机删除快照时卡住的解决办法
  19. Contiki学习笔记——Cooja启动失败
  20. MySQL (四)------DML操作表记录-增删改【重点】DQL操作表记录-查询【重点】

热门文章

  1. prefix-list前缀列表
  2. 12个开源的后台管理系统
  3. 纪念Dropbox君
  4. python 中dtype 为object_DataFrame中的字符串,但dtype是对象
  5. python plt.imshow函数显示图像颜色失真
  6. uni-app前端开发(一)登录功能
  7. 论文笔记:m6Acorr: an online tool for the correction and comparison of m6A methylation profiles
  8. JAVA生成PDF标点符号不换行_iText生成中文PDF行首标点处理
  9. 威廉.布莱克 和 他的诗歌
  10. 项目十大管理之成本管理