div 等块级标签横向排列的方法总结

简介: 块级标签的默认文档流是上下排列的,再配上横向排列的方法,请过适当的嵌套,可以应对几乎所有常见的布局需求,因此,我决定总结一下 div 横向排列的方法。这也是我初学前端时最困扰的问题~以下面这组 div 为例,wrap 的高度由内容撑开...

块级标签的默认文档流是上下排列的,再配上横向排列的方法,请过适当的嵌套,可以应对几乎所有常见的布局需求,因此,我决定总结一下 div 横向排列的方法。这也是我初学前端时最困扰的问题~

以下面这组 div 为例,wrap 的高度由内容撑开


img_cd0d600ab116b6c9210aebfd4e157af1.png

平时是这样的,上下排列~


img_7a1681468831236cb079cb24e38654a4.png

float 浮动


img_3ec72335a139ed6d411156304f85386a.png


img_f1db085d5eef0d193911b93eda89d81f.png

成功横向排列了,但是有几个问题~

float 的特点:

多个 div 右浮动时,顺序会颠倒,请注意看 div2 和 div3,可以通过将它们再用一个 div 包起来,然后对它们设置左浮动,对父 div 设置右浮动来解决。

脱离文档流,若父元素高度由内容撑开,那么就撑不开,从图中可以看到 wrap 没了,因为高度变为了 0,可通过清浮动来解决。

文字会环绕在浮动元素周围,图中未表现出来。

不能换行,图中未表现出来。

inline-block 行块标签


img_1ca88bf1887ff347b58ef4d596a25cc4.png


img_59aaa8bc6dd26b496c522305d3910e4e.png

横排成功~但同样有些问题:

inline-block 特点:

元素间会有空白。这个空白其实是空白符,因为 inline-block 会使元素在行内排列,也就是跟文字在一起排列,而我们源代码中 div 和 div 之间的空格、Tab、换行符在浏览器里会被合并成一个空白符,所以就会出现缝隙,常见的解决方案有:

通过给父元素设置 font-size: 0; ,使空白符不可见。但会导致子元素中继承的字体大小也为 0,解决方案: 

1.可以明确子元素内字体大小的,为其单独设置文字大小。

2。可以使用 rem 作为字体大小单位来继承 HTML 根元素的字体大小属性。

在源代码里把前一个 div 的结束标签和后一个 div 的开始标签贴在一起。可读性极差,丑拒。


img_27fb6e804f29bc20dfa7935f9c90a614.png

不用 inline-block,嘿嘿~

可以换行,如下图


img_1b96bdf231b37e076c6bda6f9a34952f.png

flex 弹性盒模型

最爱的解决方案,给父元素设置 display: flex; 即可


img_b74a5cf36d662f59bef509f866c18f13.png

效果图:


img_a0eb9f34bf9b0a9bf17cee3cc73a5bc5.png

还可以通过 justify-content 属性调整子元素的水平对齐方式:


img_aada30a6e51dbb35959385064fbd71ca.png

flex-start:

默认,图同上。

flex-end:


img_b8480829116c2d854f8a5e535c7dfb5c.png

center:


img_f2833067e6bf4e80921ccbb1064a3951.png

space-around:


img_eea06c550ea335d7442d01c7e22caf08.png

space-between:


img_8e8432f6d163ffca1f26cfe299308ca6.png

不过当父元素宽度不够时, flex 默认是不会换行的,而是会等比例压缩,缩放比例 flex-shrink 属性或复合属性 flex 相关。


img_37ff20c9a50e7dfe1d1fb6b3f95927a9.png

通过 flex-wrap 属性可以使其换行,该值有三个取值 nowrap、 wrap、 wrap-reverse,默认为 nowrap。


img_592f45e87cf0f9009adb51dadd35efb0.png

nowrap

默认,图略。

wrap


img_ab280fa2a0913c0aa382af8ba6da81a2.png

wrap-reverse


img_5f80c6023211eb5f7f1dbc6f1ce275b6.png

flex 使用不再深入探讨,推荐阮一峰写的教程 Flex 布局教程:语法篇

定位,慎用

绝对定位,相对定位,根据实际需求选用,切忌滥用。

负的margin

见一个打死一个!!!

table,已废弃,略~

感谢阅读

喜欢看小编文章的点个订阅或者喜欢!小编每天都会跟大家分享文章,也会给大家提供web前端学习资料。

相关文章
|
11天前
【奇技淫巧】实现flex布局中,单独某个元素挪到右侧、底部,与其他元素排列不同,就像是个另类。(主要是用到margin-left和align-self)
【奇技淫巧】实现flex布局中,单独某个元素挪到右侧、底部,与其他元素排列不同,就像是个另类。(主要是用到margin-left和align-self)
|
7月前
|
前端开发 JavaScript 数据安全/隐私保护
Bootstrap 表单样式-水平排列
Bootstrap 表单样式-水平排列
43 0
|
4月前
|
前端开发
CSS div 水平排列
CSS div 水平排列
|
6月前
28EasyUI 数据网格- 设置排序
28EasyUI 数据网格- 设置排序
12 0
|
6月前
39EasyUI 数据网格- 条件设置行背景颜色
39EasyUI 数据网格- 条件设置行背景颜色
23 0
|
前端开发 计算机视觉
|
前端开发
div 水平排列
Flex 布局是最简单的一种方式 ,css3 新增。父级 div 直接使用 display: flex; 即可。
div 水平排列
|
前端开发 容器
div水平布局两边对齐
父容器div使用 position: relative;,子div使用 position:absolute;定位,注意边距问题。
div水平布局两边对齐
使用flex布局把三个元素分配成两列,第二列垂直布局两个元素
使用flex布局把三个元素分配成两列,第二列垂直布局两个元素
220 0
使用flex布局把三个元素分配成两列,第二列垂直布局两个元素
|
前端开发
html 三列布局(两列自适应,一列固定宽度)
原文:html 三列布局(两列自适应,一列固定宽度) 不做过多解释:主要是记录一个完整的布局样式,实现页面大致三列其中左右两列是自适应宽度,中间固定宽度效果。 不多少代码奉上: CSS样式代码: /******************** *公共标签样式 ***************...
839 0