专栏首页程序员的知识天地div 等块级标签横向排列的方法总结

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

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

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

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

float 浮动

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

float 的特点:

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

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

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

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

inline-block 行块标签

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

inline-block 特点:

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

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

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

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

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

不用 inline-block,嘿嘿~

可以换行,如下图

flex 弹性盒模型

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

效果图:

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

flex-start:

默认,图同上。

flex-end:

center:

space-around:

space-between:

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

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

nowrap

默认,图略。

wrap

wrap-reverse

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

定位,慎用

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

负的margin

见一个打死一个!!!

table,已废弃,略~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python优雅操作-实现名片管理系统

    python的确是适合零基础的编程爱好者学习的语言,python的程序能看懂,但是很难去实现,这是每一个学习python的新手们基本上都会遇到的难题。好记性不如...

    一墨编程学习
  • H5学习从0到1-H5的块标签的使用(9)

    一墨编程学习
  • Python3中真真假假True、False、None等含义详解

    在Python中,不仅仅和类C一样的真假类似,比如1代表真,0代表假。Python中的真假有着更加广阔的含义范围,Python会把所有的空数据结构视为假,比如[...

    一墨编程学习
  • 网页超过一屏时自动浮动在网页最上方的图层特效

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>adsorpti...

    欢醉
  • JavaScript之怎样获取元素节点

    JavaScript获取元素节点一共有三种方法,分别是通过元素ID、通过标签名字和通过类名字来获取; 1.通过元素ID属性的ID值来获得元素对象-getElem...

    郑小超.
  • 初学者必知的HTML规范

    超然
  • jQuery入门前言

    上次说到了JavaScript,对其有一定了解,本文就来说说jQuery。jQuery就是一个由JavaScript编写的轻量库,简单的说就是封装了一些Java...

    贪挽懒月
  • 重构代码的Tricks

    js的设计模式是针对于整体代码的设计是否合理,给出了一些具体的解决办法。 而重构代码就是依赖于设计模式而实现的一个必要手段,可以说设计模式就是重构代码的目标,但...

    腾讯IVWEB团队
  • Vue官方文档笔记

    当一个Vue实例(如上面的vm)被创建后,它将data对象里面的所有的属性加入到Vue的响应式系统中。当这些属性的值发生改变时,视图会产生“响应”, 即视图展示...

    tandaxia
  • 前端基础-JavaScript综合案例

    insertBefore、firstChild、getComputedStyle、appendChild、createElement、Math.random、M...

    cwl_java

扫码关注云+社区

领取腾讯云代金券