视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
css中display:inline-block与float在使元素排列在一行时使用差异
2020-11-27 18:50:08 责编:小采
文档

在布局的时候,很多设计都需要将元素排列在一行,使元素排列在一行的方法有多种,从兼容性和易用性来考虑,先介绍display:inline-block(显示为内联块)和float(浮动)。

float: 浮动,闻其名而知其意:使元素浮起来,脱离文档流,从而达到多个元素排列在一行的目的。浮动元素有哪些特征呢?如下所示:

  1. 支持宽高;

  2. 在一行显示;

  3. 不设置宽度时, 宽度由内容撑开 ;

  4. 会按照指定的顺序移动,直到碰到浮动元素,或父级的边界停止;

  5. 元素浮动之后会使浮动元素父级高度塌陷;

  6. 脱离文档流;

  7. 元素浮动之后,上下margin不再叠加;

  8. 触发BFC。

inline-block:内联块,即既有内嵌的部分特征也具有块级元素的特征。如下所示:

  1. 支持宽高;

  2. 在一行显示;

  3. 代码换行会解析成空格;

  4. 不设置宽度时,宽度由内容撑开;

  5. inline-block类型元素底部默认会有一个空隙;

  6. inline-b类型元素上下margin不叠加;

  7. 触发BFC。

可以从这两个样式的特征中看出,它们相同的地方在于:1.支持宽高;2.在一行显示;3.不设置内容时,宽度由内容撑开;7,.上下margin不叠加以及8.触发BFC。在一行显示这一特征,决定了这两可以使元素排列在一行。那么使用差异,就得从他们不同的特征开始分析:

  1. 排列方向限定 。 浮动的第4个特征决定了它可以决定元素的排列顺序。float:left:元素从左至右排列,float:right:元素从右至左排列。而display:inline-block,只能从左往右。

  2. 是否脱离文档流。浮动元素会脱离文档流,而display:inline-block不会。所以会有这样一个现象:当第一个浮动元素或者inline-block元素已经占满一行,同时给第二个元素加margin-left:-100%,第二个浮动元素会覆盖在第二个浮动元素上面,而第二个inline-block会换行显示并再根据margin-left进行移动;

  3. 浮动元素会父级的高度塌陷。为了避免父元素的高度塌陷,一般在使用浮动的时候,都要对这一特征进行处理:给父级设置高度或者进行清浮动处理;

  4. inline-block元素底部默认有一个空隙。在网页制作时,需要设置垂直对齐方式:vertical-align来进行空隙的消除;

  5. inline-block类型元素html代码换行时会产生空格,为了消除空格的影响,需要:在结构中将内联元素写成一行或者在样式中给内联元素父级font-size设置为0;

从上述差异分析,已经可以看出float与inline-block的优缺点:float之后,大部分情况下需要清浮动或者设置高度。display:inline-block需在不更改默认排列方式(从左至右)的情况下才可使用,而且需要清除底部空隙和左右因为代码换行产生的空格。

下载本文
显示全文
专题