带你通过10个例子,了解FlexBox模型的所有属性

本篇文章带大家深入了解一下flexbox弹性盒子)模型,通过10个demo示例,来详细介绍弹性盒子模型的所有属性,希望对大家有所帮助!

带你通过10个例子,了解FlexBox模型的所有属性

FlexBox(弹性盒子)模型,也就是我们常说的flex布局,现在flex布局已经是前端的主流布局方案,早就是前端必会的内容了,接下来我们一起来看一下弹性盒子模型。

相关概念

CSS3新增的弹性盒子模型是一个完整的模块,涉及的样式属性较多。首先,对弹性盒子模型的相关概念完成基本的了解。【推荐学习:css视频教程】

1.png

伸缩容器(flex container):包裹伸缩项目的父元素。伸缩项目(flex item):伸缩容器的每个子元素。轴(axis):每个弹性盒子模型拥有两个轴。主轴(main axis):伸缩项目沿其一次排列的轴被称为主轴。侧轴(cross axis):垂直于主轴的轴被称为侧轴。方向(direction):伸缩容器的主轴由主轴起点和主轴终点,侧轴由侧轴起点和侧轴终点描述伸缩项目排列的方向。尺寸(dimension):根据伸缩容器的主轴和侧轴,伸缩项目的宽度和高度。对应主轴的称为主轴尺寸。对应侧轴的称为侧轴尺寸。

定义弹性盒子模型

CSS3中想要设置为弹性盒子模型的话,需要通过display样式属性设置值为flexinline-flex即可。

display: flex; /* 值 flex 使弹性容器成为块级元素。 *//* 或者 */display: inline-flex; /* 值 inline-flex 使弹性容器成为单个不可分的行内级元素。 */

以上代码就可以指定某个元素为弹性盒子模型,该元素成为伸缩容器,子元素则成为伸缩项目。

值得注意的是如果需要兼容老版本浏览器,需要增加浏览器厂商的前缀。

以下代码定义了一个简单的弹性盒子:

html

    
1
2
3

css

.container {  display: flex;/* 忽略基本样式 */}

效果如下:

2.png

默认情况下,所有子元素作为伸缩项目都是沿着主轴水平排列。

与容器有关的属性

flex-direction属性

CSS中的flex-direction属性指定了内部元素是如何在flex容器中布局的,定义了主轴的方向(正方向或反方向)。语法结构如下:

flex-direction: row | row-reverse | column | column-reverse;

row:默认值,flex容器的主轴被定义为与文本方向相同。主轴起点和主轴终点与内容方向相同(起点在左端)。row-reverse:表现和row相同,但是置换了主轴起点和主轴终点(起点在右端)columnflex容器的主轴和块轴相同。主轴起点与主轴终点和书写模式的前后点相同(起点在上沿)column-reverse:表现和column相同,但是置换了主轴起点和主轴终点明(起点在下沿)

如下代码展示了各个值的情况:

.row {  /* 默认,水平排列 */  flex-direction: row;  height: 200px;}.row-reverse {  /* 水平排列,反向 */  flex-direction: row-reverse;  height: 200px;}.column {  /* 垂直排列 */  flex-direction: column;  margin-right: 100px;}.column-reverse {  /* 垂直排列 反向 */  flex-direction: column-reverse;}

代码运行效果如下所示:

3.png

justify-content属性

CSS中的justify-content属性适用于伸缩容器元素,用于设置伸缩项目沿着主轴线的对齐方式

语法结构如下:

justify-content: center| flex-start| flex-end| space-between| space-around;

center:伸缩项目向第一行的中间位置对齐(居中)。flex-start:伸缩项目向第一行的开始位置对齐(左对齐)。flex-end:伸缩项目向第一行的结束位置对齐(右对齐)。space-between:伸缩项目会平均分布在一行中(两端对齐,项目之间的间隔都相等)。space-around:伸缩项目会平均分布在一行中(两端对齐,项目两侧的间隔相等)。

示例代码如下所示:

.center {  justify-content: center; /* 居中 */}.start {  justify-content: flex-start; /* 左对齐 */}.end {  justify-content: flex-end; /* 右对齐 */}.between {  justify-content: space-between; /* 两端对齐,项目之间的间隔都相等 */}.around {  justify-content: space-around; /* 两端对齐,项目两侧的间隔相等 */}

4.png

值得注意的是,实现的是伸缩项目相对于伸缩容器的对齐方式,与页面无关

align-items属性

CSS中的align-items属性适用于伸缩容器元素,用于设置伸缩项目所在行沿着侧轴线的对齐方式

语法结构如下:

align-items: center | flex-start| flex-end| baseline| stretch;

center:伸缩项目向侧轴的中间位置对齐。flex-start:伸缩项目向侧轴的起点位置对齐。flex-end:伸缩项目向侧轴的终点位置对齐。baseline:伸缩项目根据伸缩项目的基线对齐。stretch:默认值,伸缩项目拉伸填充整个伸缩容器。

示例代码如下所示:

.center {  align-items: center; /* 居中 */}.start {  align-items: flex-start; /* 顶对齐 */}.end {  align-items: flex-end; /* 底对齐 */}

运行效果如下所示:

5.png

配合justify-content属性,可以做出水平垂直居中

flex-wrap属性

CSS中的flex-wrap属性适用于伸缩容器元素,用于设置伸缩容器的子元素是单行显示还是多行显示

语法结构如下:

flex-wrap: nowrap| wrap| wrap-reverse

nowrap:设置伸缩项目单行显示。这种方式可能导致溢出伸缩容器wrap:设置伸缩项目多行显示,第一行在上方。wrap-reverse:与wrap相反,第一行在下方。

示例代码如下所示:

.nowrap {  /* 单行显示 */  flex-wrap: nowrap;}.wrap {  /* 多行 */  flex-wrap: wrap;}.wrap-reverse {  /* 多行,反向 */  flex-wrap: wrap-reverse;}

6.png

如果设置伸缩容器的宽度小于所有子元素宽度之和的话,子元素并没有自动换行也没有溢出;效果根据伸缩容器的宽度自动调整所有子元素的宽度。

align-content属性

CSS中的align-content属性适用于伸缩容器元素,用于设置伸缩行的对齐方式。该属性会更改flex-wrap属性的效果。

语法结构如下:

align-content: center| flex-start| flex-end| space-between| space-around| stretch;

center:各行向伸缩容器的中间位置对齐。flex-start:各行向伸缩容器的起点位置对齐。flex-end:各行向伸缩容器的终点位置对齐。space-between:各行会平均分布在一行中。space-around:各行会平均分布在一行中,两端保留一半的空间。stretch:默认值,各行将会伸展以占用额外的空间。

值得注意的是该属性对单行弹性盒子模型无效。

示例代码如下:

.center {  align-content: center; /* 居中 */}.start {  align-content: flex-start; /* 顶对齐 */}.end {  align-content: flex-end; /* 底对齐 */}.between {  align-content: space-between; /* 两端对齐,项目之间的间隔都相等 */}.around {  align-content: space-around; /* 两端对齐,项目两侧的间隔相等 */}

7.png

值得注意的是该属性对单行弹性盒子模型无效,即:带有flex-wrap: nowrap

flex-flow属性

CSS中的flex-flow属性适用于伸缩容器元素,该属性是flex-directionflex-wrap的简写属性,默认值为row nowrap

语法结构如下:

flex-flow:  || 

与伸缩项有关的属性

order属性

CSS中的order属性规定了弹性容器中的可伸缩项目在布局时的顺序。元素按照order属性的值的增序进行布局。拥有相同order属性值的元素按照它们在源代码中出现的顺序进行布局。

语法结构

.item {  order: }

属性值

:表示此可伸缩项目所在的次序组,默认为0。

值得注意的是,order仅仅对元素的视觉顺序产生作用,并不会影响元素的逻辑顺序。

示例代码如下:

.item1 { order: 2; }.item4 { order: -1; }

8.png

flex-grow属性

flex-grow属性规定在相同的容器中,项目相对于其余弹性项目的增长量,值默认为0;语法结构如下:

.item {  flex-grow: ; }

示例代码如下:

.item2 { flex-grow: 2; }

9.png

如果所有伸缩项目的flex-grow的值都为1,则它们将等分剩余空间;如果某个伸缩项目的flex-grow的值为2,其他为1,则前者占据的剩余空间将比其他项多一倍。

flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

语法结构如下:

.item {  flex-shrink: ; }

示例代码如下:

.item2 { flex-shrink: 2; }

10.png

如果所有伸缩项目的flex-shrink的值都为1,当空间不足时,都将等比例缩小;如果某个伸缩项目的flex-shrink的值为0,其他为1,则空间不足时,前者不缩小。

flex-basis属性

flex-basis属性定义了在分配多余空间之前,项目在主轴方向上的初始大小。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

语法结构如下:

.item {  flex-basis:  | auto; }

它可以设为跟widthheight属性一样的值,例如设置230px,则项目将占据固定空间。

flex属性

CSS中的flex属性是flex-growflex-shrinkflex-basis的简写属性,用于设置伸缩项目如何伸长或缩短以适应伸缩容器中的可用空间。语法结构如下

flex: auto | initial | none | [  ? ||  ]

none:元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应flex容器。相当于将属性设置为”flex: 0 0 auto“。auto:元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收flex容器中额外的自由空间,也会缩短自身来适应flex容器。这相当于将属性设置为”flex: 1 1 auto“.

flex属性可以指定1个、2个或3个值。

单值语法:值必须为以下其中之一:

一个无单位数():它会被当作的值。一个有效的宽度(width)值:它会被当作的值。关键字noneautoinitial.

双值语法:第一个值必须为一个无单位数,并且它会被当作的值。第二个值必须为以下之一:

一个无单位数:它会被当作的值。一个有效的宽度值:它会被当作的值。

三值语法:

第一个值必须为一个无单位数,并且它会被当作的值。第二个值必须为一个无单位数,并且它会被当作 的值。第三个值必须为一个有效的宽度值,并且它会被当作 的值。

align-self属性

CSS中align-self属性适用于伸缩容器元素,于设置伸缩项目自身元素在侧轴的对齐方式。该属性可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性;语法结构如下所示:

align-self: center| flex-start| flex-end| baseline| stretch;

center:伸缩项目向侧轴的中间位置对齐。flex-start:伸缩项目向侧轴的起点位置对齐。flex-end:伸缩项目向侧轴的终点位置对齐。baseline:伸缩项目根据伸缩项目的基线对齐。stretch:默认值,伸缩项目拉伸填充整个伸缩容器。

示例代码如下:

.start { align-self: flex-start; }.center { align-self: center; }.end { align-self: flex-end; }

11.png

写在最后

本篇文章到这就结束了,这里给大家推荐一个学习Flex布局的一个游戏:

Flexbox Froggy – 一个用来学CSS flexbox的游戏

地址:https://flexboxfroggy.com/#zh-cn

挺有意思的,练习flex布局可以试试。

原文地址:https://juejin.cn/post/7065296076995035166

作者:一碗周

(学习视频分享:web前端入门视频)

以上就是带你通过10个例子,了解FlexBox模型的所有属性的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1623863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 08:25:14
下一篇 2025年12月24日 08:25:26

相关推荐

  • 总结分享CSS设计模式知识点

    本篇文章给大家带来了关于css设计模式的相关知识,其中包括oocss、bem、smacss、itcss以及acss的相关问题,希望对大家有帮助。 前言 传统的CSS书写风格是随意命名,堆叠样式,造成了混乱不堪的结果,你是否遇到庞大复杂的项目里,CSS代码难以维护的情况,你是否想要除了能够还原实物原型…

    2025年12月24日 好文分享
    000
  • 深入浅析Tailwind CSS(总结分享)

    本篇文章给大家带来了关于tailwind css的相关知识,tailwindcss 是一个css框架,和bootstrap、element ui、antd、bulma一样将一些css样式封装好,用来加速我们开发的一个工具,希望对大家有帮助。 (学习视频分享:css视频教程) 和其他的CSS框架有什么…

    2025年12月24日 好文分享
    000
  • 分享12个实用的 CSS 小技巧(快来收藏)

    本篇文章给大家分享12个有趣且实用的 css 小技巧,让前端开发更轻松,快来收藏吧,希望对大家有所帮助! (推荐学习:css视频教程) 1. 打字效果 代码实现: 有趣且实用的 CSS 小技巧 .wrapper { height: 100vh; display: flex; align-items:…

    2025年12月24日 好文分享
    000
  • 2022年你值得了解的几个CSS新特性(收藏学习)

    本篇文章给大家分享几个2022年值得期待的、不应该错过的 css 新功能,一起收藏学习吧! 对于CSS来说,2022年是非常值得期待的一年,大量的新功能即将出现,有些已经开始登录浏览器,有些可能会在2022年获得浏览器的广泛支持。下面就来看看2022年有哪些值得期待的 CSS 新功能吧!(推荐学习:…

    2025年12月24日
    000
  • 深入了解CSS动画新特性:@scroll-timeline

    在之前的文章《2022年你值得了解的几个css新特性(收藏学习)》中带大家简单介绍了几个css新特性,今天带大家深入了解其中的一个新特性(动画杀手锏):@scroll-timeline,希望对大家有所帮助! 在 CSS 规范 Scroll-linked Animations 中,推出了一个划时代的 …

    2025年12月24日 好文分享
    000
  • 如何利用CSS来美化滑动输入条?自定义样式方法浅析

    如何利用css来美化滑动输入条(input range)?下面本篇文章给大家介绍一下利用纯 css 自定义滑动输入条样式的方法,希望对大家有所帮助! 关于原生 input range 滑动输入条如何自定义样式一直都是我心里的一道坎,一般情况下,可以很轻易的美化到这个程度。(推荐学习:css视频教程)…

    2025年12月24日 好文分享
    000
  • css3怎么设置rotate旋转点

    在css3中,可以利用“transform-origin”属性设置rotate旋转元素时的旋转点,该属性用于更改转换元素的位置,可以改变旋转的中心点,语法为“transform-origin: x-axis y-axis z-axis;”。 本教程操作环境:windows10系统、CSS3&…

    2025年12月24日
    000
  • css3如何让盒子水平居中

    css3让盒子水平居中的方法:1、使用margin属性,给盒子元素添加“margin: 0 auto;”样式即可水平居中;2、利用flex弹性布局来实现水平居中;3、利用position和transform属性实现水平居中。 本教程操作环境:windows7系统、CSS3&&HTML…

    2025年12月24日 好文分享
    000
  • 如何将css文件设置为utf-8

    在css中,可以利用“@charset”规则来将字符编码设置为“utf-8”,该规则可以指定样式文件中使用的字符编码,语法为“@charset “UTF-8”;”;“@charset”规则必须是样式表中的第一个元素,前面不得有任何字符。 本教程操作环境:windows7系统、…

    2025年12月24日
    000
  • 手把手教你使用CSS制作动态饼图(附代码)

    css如何制作饼图?下面本篇文章手把手教你使用css制作动态饼图,希望对大家有所帮助! 饼图是常见的组件,可让你显示整体的各个部分,你可以将它们用于许多不同的场景。你会发现很多关于构建这样一个组件的文章,但它们通常要么依赖于 SVG,要么依赖于大量的 HTML 元素。在这篇文章中,我将向你展示如何使…

    2025年12月24日 好文分享
    000
  • 一文详解如何css实现动态弧形线条长短变化的Loading动画

    如何使用css 实现动态线条 loading 动画?下面本篇文章介绍一下使用css实现动态弧形线条长短变化的loading动画的3种方法,希望对大家有所帮助! 有群友问我,使用 CSS 如何实现如下 Loading 效果: 这是一个非常有意思的问题。 立即学习“前端免费学习笔记(深入)”; 我们知道…

    2025年12月24日 好文分享
    000
  • 实例详解之怎样使用css实现3D穿梭效果

    本篇文章给大家带来了怎样使用css来实现星际3d穿越效果的问题,希望对大家有帮助。 使用 CSS 3D 实现星际 3D 穿梭效果 这个技巧,我在 奇思妙想 CSS 3D 动画 | 仅使用 CSS 能制作出多惊艳的动画? 也有提及过,感兴趣的可以一并看看。 假设我们有这样一张图形: 立即学习“前端免费…

    2025年12月24日 好文分享
    000
  • 十分钟教会你仅使用一个div配合css实现饼状图

    本篇文章给大家带来了关于怎样使用一个div配合css实现病状图的相关问题,希望对大家有帮助。 完整的代码请滑到文末。 我们只使用一个div,仅采用css实现饼状图。 HTMl 结构 立即学习“前端免费学习笔记(深入)”; 60% 我们添加了几个 css 的变量: –p:进度条的百分比(纯…

    2025年12月24日 好文分享
    000
  • 聊聊利用CSS实现九宫格布局的几种方法!

    本篇文章给大家分享利用css实现九宫格布局的几种方法,并介绍一下nth-of-type 与 nth-child 的区别,希望对大家有所帮助! 最近几天刷面经常看见一道题,“九宫格布局”。自己尝试用几种办法实现了九宫格布局,发现这里面涉及了挺多的 css 知识,记录一下。 我觉得这篇文章讲得很好,大家…

    2025年12月24日 好文分享
    000
  • 深入解析自定义的CSS重置样式

    本篇文章带大家深入解析下自定义的css重置样式,研究下其中的每一条规则,并分析下使用该规则的原因,希望对大家有所帮助! 每当我开始一个新项目时,首要的任务就是处理 CSS 语言中的那些边边角角的问题。为了解决这些问题,通常会使用自定义的一组基础样式。 在过去很长一段时间,我使用的是来自 Eric M…

    2025年12月24日 好文分享
    000
  • 手把手教你使用纯CSS仿AntDesign的Logo彩蛋效果

    怎么实现 ant design官网的logo彩蛋效果?本篇文章就来分析一下实现原理,带大家一起使用纯css来一步步实现 ant design官网logo彩蛋效果,希望对大家有所帮助! 最近项目中 Ant Design 接入比较多,还是非常不错的。不知道大家有没有发现这样的效果,在官网上,如果鼠标放在…

    2025年12月24日 好文分享
    000
  • 深入浅析css中的层叠上下文

    本篇文章带大家聊聊css中的层叠上下文,通过示例来比较一下层叠等级,希望对大家有所帮助! 前段时间,公司开始推进低代码平台业务,我有幸的参与其中。在这期间牵扯到了css的层叠上下文,并给我带来了一定的困扰,为了更好的实现业务逻辑,我觉得好好的深入研究一下css的层叠上下文。想必大家都知道网页是二维空…

    2025年12月24日 好文分享
    000
  • 浅析CSS中的5种设计模式,聊聊vue项目中CSS目录代码的作用

    本篇文章带大家聊聊css中的5种设计模式,并介绍一下vue3项目中个css style目录中的代码作用,希望对大家有所帮助! 工作了几年,发现在项目中经常存在如下问题: 1.模块拆分不合理2.变量和函数命名不知所云3.缺少注释或者是写了一堆描述不清的内容4.重复的代码遍布各个角落等 因为这些不良的编…

    2025年12月24日
    000
  • 鲜为人知!用css做极光效果

    本篇文章给大家分享使用css实现极光效果,其中主要步骤包括绘制深色背景、使用渐变画出极光的轮廓、旋转拉伸等等相关问题,希望对大家有帮助。 .g-aurora { … transform: rotate(45deg) scaleX(1.4); mix-blend-mode: color-dodge…

    2025年12月24日
    000
  • 你了解 Transition 吗?一起来深入了解下Transition!

    你了解 transition 吗?你可能并不了解 transition?下面本篇文章就来通过图文结合的方式带大家深入了解一下transition,希望对大家有所帮助! 这篇文章我们深入学习 Transition 动画。没错,CSS3 Transition 动画。你可能会问,不是很简单吗,这什么好讲的…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信