你不能只会flex居中布局,精制动画讲解所有flex布局方式!通俗易懂纯干货教程!...
flex布局相信很多人都已经有不少了解,其优势和作用被越来越多的开发者所喜爱,网上也有很多关于关于flex的介绍和教程。但是根据笔者的面试经验发现,很多人尤其是初中级开发者对flex布局都仅仅停留下center布局、flex-start/end布局。当被问到什么是 stretch布局、space-between布局时,有一部分人就开始含糊其辞。尤其是当被问到什么是space-around布局、space-evenly布局,以及他们的区别的时候。几乎90%以上的同学都会被问住。
其实flex除center以外的布局方式同样重要,只是我们平时用到的场景不如center多。彻底学会其他布局方式,不仅仅在面试的时候可以发挥重要作用(甚至可以吊打某些水平差的面试官),而且在平时的日常开发过程中,适当的运用合适的布局,也可以让页面更美观,体验感更好哦~
针对很多新手和中级开发者理解flex布局方式比较晦涩难懂的情况,笔者通过制作了一个精心准备的动画效果,让各种布局方式更直观、对比更强烈的展现出来,然后结合图文用非官方的通俗易懂的方式详细讲解每一种布局方案,让所有初中级开发者都能彻底搞懂每一种flex布局方式!
让我们先看下直观的布局方式动画截图:

是不是已经有一定直观的差别对比了呢,看不太懂也没关系,接下来我们将把上图的动画挨个拆解解析,确保小白也能听懂每一个flex布局原理!
如果这篇文章能给您带来一点点的帮助的话,麻烦移动下鼠标点个️赞️吧!您的点赞会给笔者带来更新的持续动力!
ps: 我们会优先重点讲解新手小白晦涩难懂的space-around布局、space-evenly布局。
一、space-around布局/space-evenly布局
space-around布局和space-evenly布局其实本质上差别不大,正因为如此,也导致了很多新手很难搞懂他们的区别,其实我们只要仔细观察下文章开头的动画,以及仔细对比下面的两张图,心细的童鞋们其实会发现,他们的区别很简单,也非常易懂,让我们先把图贴上:

怎么样,心细的你是不是已经发现他们的区别了呢?是的,正如你看到的那样,他们的含义和解释如下:
space-around布局和space-evenly布局都是做的居中均分剩余空隙间距的布局方式,且这两种排序方式中,各个元素之间的距离都是完全一致的。
注意:上文提到的各个元素之间的距离只包含A、B、C项3个元素space-around的156px和space-evenly的中间2个113px的间距,并不包含首尾间距,如space-around的78px间距和space-evenly布局的首尾2个113px间距,即使evenly的首尾间距和各元素之间的间距是一样的。
他们唯一的区别就是:
在space-around布局方式中,第一个元素到开头的距离(78px)和最后一个元素到末尾的距离(78px)将会是各个相邻元素之间距离(156px)的一半。(156 / 2 = 78px)
在space-evenly布局方式中,第一个元素到开头的距离(113px)和最后一个元素到末尾的距离(113x)将会和各个相邻元素之间的距离(113px)保持完全相等。(都是113px)
这时候我们再把文章开头的gif动图拿过来对比下,是不是一下子就完全搞懂了呢?

这两种布局方式一个更平稳正式,一个更圆润随意,就看各位看官怎么取舍审美啦!
二、flex-start/flex-end
flex-start/flex-end大家应该都不陌生,就是从flex主轴的方向从开头(start)到结束(end)依次排列。

flex-start/flex-end特性我们不再多说。
但是有个附加点可以留意下:其实flex除了flex-start/flex-end以外,还有start/end布局。有的开发者说应该是flex-start,有的开发者说应该是start,各执一词。其实这两个布局方式都是存在的。

他们之间还有一些区别:
flex-start是针对所有flex盒子项进行排列,而start是针对所有项进行排列,不管是不是flex盒子。这就意味着 reverse之类的(如row-reverse)排列方式将不会对设置start的项目生效,只会针对设置了flex-start的项目生效。
三、stretch
stretch也比较好理解,他的含义是:自动拉伸子元素,直到铺满父容器为止。这里有2点需要强调下,很多新手都很容易忽略:
自动拉伸的元素只针对width为auto的元素,如果宽度设置了指定的with,stretch将会失效。
自动拉伸的元素会受到max-height/max-width的约束,利用这个特性我们可以更自由的组合元素,做到更个性化的拉伸效果。

四、space-between
space-between大家更是比较熟悉了,他的含义是:
第一个元素与头部对齐,最后一个元素与尾部对齐。然后相邻元素间距离相同。

这个其实和space-around布局、space-evenly布局、center一样都是用来做居中对称布局,只是这个非常容易理解,单独拿出来提一下带过即可,相信很多小伙伴看到这里已经有了比较全面的认识啦!
总结
我们本次结合图文把flex的所有布局方式都详细讲解完毕(center布局太常见了除外)。相信各位看官应该都能看懂,如果各位有疑问或者文章有误的地方,欢迎各位评论交流哦~
如果这篇文章能给您带来一点点的帮助的话,麻烦移动下鼠标点个️赞️吧!您的点赞会给笔者带来更新的持续动力!
源码附录
让我们再通过源码直观看下所有的flex布局的不同布局方式:
ps:由于掘金展示代码区域较窄,可以通过关闭左侧源码方式+通过检查元素拉伸代码展示区方式获得和上图动画中一样的直观体验。或者直接拷贝代码本地运行哦~
可以看到,在比较窄的width宽度范围内,各种布局方式看不出很明显的区别,但是再长度较长的容器中,对比就会越来越明显,这同样也意味着,在一些大屏或者超宽屏的页面上,更要学会所有flex布局,才能在用到的时候快人一步!
程序员面试题库分享
1、前端面试题库 (面试必备) 推荐:★★★★★
地址:前端面试题库
2、前端技术导航大全 推荐:★★★★★
地址:前端技术导航大全
3、开发者颜色值转换工具 推荐:★★★★★
地址 :开发者颜色值转换工具
4、前端边框阴影在线工具 推荐:★★★★★
地址:前端边框阴影在线工具
你不能只会flex居中布局,精制动画讲解所有flex布局方式!通俗易懂纯干货教程!...的更多相关文章
- 只需5分钟!一文读懂CSS布局(二) -- flex布局
目录 简介 基本概念 容器属性 1. flex-direction 测试代码 2. flex-wrap 3. flex-flow 4. justify-content 5. align-items 6 ...
- HTML的三种布局:DIV+CSS、FLEX、GRID
Div+css布局 也就是盒子模型,有W3C盒子模型,IE盒子模型.盒子模型由四部分组成margin.border.padding.content. 怎么区别这两种模型呢,区别在于w3c中的width ...
- CSS3动画属性和flex弹性布局各个属性
[CSS3动画的使用] 1.声明一个关键帧(动画): @keynames name{ from{} to{} } 每个阶段的写法: ①可以直接使用from-to的写法 ②可以设置0%-100%的写法, ...
- 布局display属性(一)--【Flex】
一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. .box ...
- css布局笔记(二)Flex
flex Flex是"Flexible Box"的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可指定为Flex布局. .box{di ...
- 响应式布局(CSS3弹性盒flex布局模型)
传统的布局方式都是基于盒模型的 利用display.position.float来布局有一定局限性 比如说实现自适应垂直居中 随着响应式布局的流行,CSS3引入了更加灵活的弹性布局模型 flex弹性布 ...
- CSS布局学习(二) - flex属性
flex属性 定义 flex布局包括最外层的容器和内部的元素,flex属性是内部元素属性.flex属性是flex-grow, flex-shrink, flex-basis三个属性的简写 flex-g ...
- CCS3的过渡、变换、动画以及响应式布局、弹性布局
CSS3 过渡 .变换.动画 在没有CSS3之前,如果页面上需要一些动画效果,要么你自己编写 JavaScript,要么使用 JavaScript 框架(如 jQuery)来提高效率. 但是CSS3出 ...
- css布局 - 常规上中下分左右布局的一百种实现方法(更新中...)
一. 上中下左固定 - fixed+margin 概括:如图,此种布局就是顶部.底部和左侧固定不动,只有中间右侧超出可滚动. html: <header>我是头部position: fix ...
- Android五大布局详解——LinearLayout(线性布局)
Android五大布局 本篇开始介绍Android的五大布局的知识,一个丰富的界面显示总是要有众多的控件来组成的,那么怎样才能让这些控件能够按你的想法进行摆放,从而自定义你所想要的用户界面呢?这就牵涉 ...
随机推荐
- Redis 数据结构-简单动态字符串
Redis 数据结构-简单动态字符串 无边落木萧萧下,不尽长江滚滚来. 1.简介 Redis 之所以快主要得益于它的数据结构.操作内存数据库.单线程和多路 I/O 复用模型,进一步窥探下它常见的五种基 ...
- S2-032 CVE-2016-3081 远程代码执行
漏洞名称 CVE-2016-3081 S2-032 远程代码执行 利用条件 Struts 2.3.20 - Struts Struts 2.3.28 ( 2.3.20.3 和 2.3.24.3 除外) ...
- S2-016 CVE-2013-2251
漏洞名称 S2-016(CVE-2013-2251) 通过操作前缀为"action:"/"redirect:"/"redirectAction:&qu ...
- P7960 [NOIP2021] 报数
简要题意 小Z在玩报数游戏,这个游戏有一个规则,就是对于一个正整数 \(x\),如果满足 \(7 \mid x\) 或 \(x\) 的十进制写法中含有 \(7\) 或是十进制写法含有 \(7\) 的倍 ...
- BUG日记之-----Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway.
在使用swagger进行测试的时候调用弹窗 解决办法: 在启动类添加@EnableSwagger2注解
- 字符编码,存储引擎及MySQL字段类型相关知识点
字符编码,存储引擎及MySQL字段类型相关知识点 一.字符编码 1.在终端输入\s,查看数据库的基本信息(当前用户,版本,编码,端口号) 2.默认的配置文件是my-default.ini 拷贝上述的文 ...
- C# 线程查漏补缺
进程和线程 不同程序执行需要进行调度和独立的内存空间 在单核计算机中,CPU 是独占的,内存是共享的,这时候运行一个程序的时候是没有问题.但是运行多个程序的时候,为了不发生一个程序霸占整个 CPU 不 ...
- Avalonia 实现动态托盘
先下载一个gif图片,这里提供一个gif图片示例 在线GIF图片帧拆分工具 - UU在线工具 (uutool.cn) 使用这个网站将gif切成单张图片 创建一个Avalonia MVVM的项目,将图片 ...
- 提供给用户使用的表格样式自定义工具,适用于elementUI表格
介绍 给用户提供了可以自定义修改elementUI表格的能力,通过混入(mixins)使用,必须先安装element-ui. 通过npm安装: npm i el-table-customizer 使用 ...
- KingbaseES dblink异常unsupported for database link
KingbaseES使用dblink查询报错:unsupported for database link 适用于: KingbaseES所有版本. 问题现象: KingbaseES创建kingbase ...