CSS3中Flex弹性盒子布局

news2025/2/25 16:11:39

文章目录

  • 一、介绍
  • 二、基本概念
  • 三、容器属性
    • 1.flex-direction
    • 2.flex-wrap
    • 3.flex-flow
    • 4.justify-content
    • 5.align-items
    • 6.align-content
  • 四、项目属性
    • 1.order
    • 2.align-self
    • 3.flex

一、介绍

Flex 是 Flexible Box 的缩写,意为“弹性布局”或者“弹性盒子”,是 CSS3 中的一种新的布局模式,可以简便、完整、响应式地实现各种页面布局,当页面需要适应不同的屏幕大小以及设备类型时非常适用。目前,几乎所有的浏览器都支持 Flex 布局。

二、基本概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称“容器”。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称“项目”。容器默认存在两根轴,分别为水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置叫做 main start,结束位置叫做 main end;交叉轴的开始位置叫做 cross start,结束位置叫做 cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做 main size,占据的交叉轴空间叫做 cross size。如下图所示:
在这里插入图片描述
CSS 中提供了以下属性来实现 Flex 布局:

属性描述
display指定 HTML 元素的盒子类型
flex-direction指定弹性盒子中子元素的排列方式
flex-wrap设置当弹性盒子的子元素超出父容器时是否换行
flex-flowflex-direction 和 flex-wrap 两个属性的简写
justify-content设置弹性盒子中元素在主轴(横轴)方向上的对齐方式
align-items设置弹性盒子中元素在侧轴(纵轴)方向上的对齐方式
align-content修改 flex-wrap 属性的行为,类似 align-items,但不是设置子元素对齐,而是设置行对齐
order设置弹性盒子中子元素的排列顺序
align-self在弹性盒子的子元素上使用,用来覆盖容器的 align-items 属性
flex设置弹性盒子中子元素如何分配空间
flex-grow设置弹性盒子的扩展比率
flex-shrink设置弹性盒子的收缩比率
flex-basis设置弹性盒子伸缩基准值

三、容器属性

1.flex-direction

flex-direction 属性用来决定主轴的方向(即项目的排列方向),属性的可选值如下:

描述
row默认值,主轴沿水平方向从左到右
row-reverse主轴沿水平方向从右到左
column主轴沿垂直方向从上到下
column-reverse主轴沿垂直方向从下到上

在这里插入图片描述

2.flex-wrap

flex-wrap 属性用来设置当弹性盒子的子元素(项目)超出父容器时是否换行,属性的可选值如下:

描述
nowrap默认值,表示项目不会换行
wrap表示项目会在需要时换行
wrap-reverse表示项目会在需要时换行,但会以相反的顺序

在这里插入图片描述

3.flex-flow

flex-flow 属性是 flex-directionflex-wrap 两个属性的简写,这里不详细说了,举个例子:

flex-flow: row-reverse wrap;

4.justify-content

justify-content 属性用于设置弹性盒子中子元素(项目)在主轴(横轴)方向上的对齐方式,属性的可选值如下:

描述
flex-start默认值,左对齐
flex-end右对齐
center居中
space-between物品均匀分布在行中;第一项在起始行,最后一项在结束行
space-around项目均匀分布在行中,周围空间相等。请注意,视觉上的空间是不相等的,因为所有项目的两边都有相等的空间。第一个项目将在容器边缘有一个空间单位,但下一个项目之间有两个空间单位,因为下一个项目有自己的适用间距
space-evenly项目分布使得任何两个项目之间的间距(以及边缘的空间)相等

在这里插入图片描述

5.align-items

align-items 属性用来设置弹性盒子中子元素(项目)在侧轴(纵轴)方向上的对齐方式,适用于单行,属性的可选值如下:

描述
stretch默认值,项目将被拉伸以适合容器(项目不指定高度的情况下)
center项目位于容器的中央
flex-start项目位于容器的顶部
flex-end项目位于容器的底部
baseline各项目中的文字基线对齐

在这里插入图片描述

6.align-content

align-content 属性与 justify-content 属性类似,可以在弹性盒子的侧轴还有多余空间时调整容器内项目的对齐方式,适用于多行,属性的可选值如下:

描述
stretch默认值,将项目拉伸以占据剩余空间
center项目在容器内居中排布
flex-start项目在容器的顶部排列
flex-end项目在容器的底部排列
space-between同justify-content,只不过改成交叉轴方向
space-around同justify-content,只不过改成交叉轴方向
space-evenly同justify-content,只不过改成交叉轴方向

在这里插入图片描述

四、项目属性

1.order

order 属性用来设置项目在容器中出现的顺序,您可以通过具体的数值来定义项目在容器中的位置,其中 number 就是项目在容器中的位置,默认值为 0。
在这里插入图片描述

2.align-self

align-self 属性允许您为某个项目设置不同于其它项目的对齐方式,该属性可以覆盖 align-items 属性的值。align-self 属性的可选值如下:

描述
auto默认值,表示元素将继承其父容器的 align-items 属性值,如果没有父容器,则为“stretch”
stretch项目将被拉伸以适合容器
center项目位于容器的中央
flex-start项目位于容器的顶部
flex-end项目位于容器的底部

在这里插入图片描述

3.flex

flex 属性是 flex-grow、flex-shrink 和 flex-basis 三个属性的简写,语法格式如下:

flex: flex-grow flex-shrink flex-basis;

参数说明如下:
flex-grow:(必填参数)一个数字,用来设置项目相对于其他项目的增长量,默认值为 0;
flex-shrink:(选填参数)一个数字,用来设置项目相对于其他项目的收缩量,默认值为 1;
flex-basis:(选填参数)项目的长度,合法值为 auto(默认值,表示自动)、inherit(表示从父元素继承该属性的值) 或者以具体的值加 “%”、“px”、“em” 等单位的形式。它和width属性类似,但也有点不同。它的初始值是 auto,此时浏览器会检查项目是否设置了 width 属性值。如果有,则使用 width 的值作为 flex-basis 的值;如果没有,则用项目内容自身的大小。如果 flex-basis 的值不是 auto,width 属性会被忽略,同时flex-basis优先级比width高,会覆盖width

另外,flex 属性还有两个快捷值,分别为 auto(1 1 auto)和 none(0 0 auto)。

在这里插入图片描述
在这里插入图片描述
flex-basis会根据内容自动撑开,而width属性不会。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于AT89C51单片机的交通灯设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779238?spm1001.2014.3001.5503 源码获取 主要内容: 在日常生活中,交通灯是一项必不可少的公共设施,可 以维护道路的畅通和交…

English Learning - L3 综合练习 2 VOA-Color 2023.05.10 周三

English Learning - L3 综合练习 2 VOA-Color 2023.05.10 周三 句 1 the color green is natual for trees and grass句 2 But it is an unnatural color for humans拓展 be adj. for 句 3句 4句 5句 6句 7句 8 The color black is used often in expressions句 9句 10句 11句…

【GAMES101】作业2学习总结

本系列博客为记录笔者在学习GAMES101课程时遇到的问题与思考。 GAMES101:课程官网GAMES101:B站视频GAMES101:相关文件下载(百度网盘) 一、基础题 本次作业的目的是为了让我们熟悉三角形栅格化的相关操作,通过Assignment2.pdf可以…

踩坑集锦之你真的明白Java类路径的含义吗?

踩坑集锦之你真的明白Java类路径的含义吗? 引言前置知识补充故事还要从程序启动讲起...C和Java的桥接类LauncherHelper主类是如何被加载的加餐: 如何利用jdk预留的口子,替换系统类加载器为我们自定义的类加载器 Launcher启动类的初始化启动类加载器类路径…

chatgpt最大的竞争对手-claude

介绍 Claude是Anthropic公司开发的AI聊天机器人,与ChatGPT类似,由OpenAI前副总裁创办。和虽然比不上GPT4,但在连续对话能力、写小说、编写代码、解释概念等方面表现出色。 Claude是Anthropic公司开发的大语言模型(LLM),主要特点…

网络安全自学误区

一、怎么入门? 如果你把每周要学的内容精细化到这种程度,你还会担心学不会,入不了门吗,其实说到底就是学了两个月,但都是东学一下,西学一下,什么内容都是浅尝辄止,没有深入进去&…

navigation2导航包(ROS2)说明-Smac Planner

Smac Planner SmacPlanner 是 Nav2 Planner 的插件。它目前包括 3 个不同的插件: 1.SmacPlannerHybrid: 高度优化完全可重新配置的 Hybrid-A* 实现,支持 Dubin 和 Reeds-Shepp 模型(腿足模型、ackermann 模型和汽车模型&#xff…

sed命令的应用

sed命令的应用 一、sed编辑器sed的工作流程:sed的命令格式于常用选项命令格式常用选项常用操作: 三、实际操作打印内容删除行替换行数内容插入内容字符位置互换 一、sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供…

实用的 iPhone 解锁:4Easysoft iPhone Unlocker中文

4Easysoft iPhone Unlocker 是一款Mac平台上的 iPhone 解锁工具,它可以帮助用户解锁 iPhone,删除密码、Touch ID 或 Face ID,以及绕过 iCloud 账户等限制。使用 4Easysoft iPhone Unlocker,用户可以轻松地解锁 iPhone,…

CentOS 8上安装MySQL数据库

CentOS 8上安装MySQL数据库 1、确定您的服务器系统版本和其他信息: cat /etc/os-release可以按照以下步骤操作: 1、更新系统包列表 sudo dnf update2、安装MySQL数据库: sudo dnf install mysql3、启动MySQL服务: sudo syste…

maven创建web工程(图文并茂)

maven的web工程 创建步骤: 1.创建普通的maven工程 ​ 参考:略 2.打成war包 ​ 说明:普通工程打成jar包。web工程打war包。 在pom.xml中书写如下内容: 3.在普通的maven工程上生成web文件夹存放静态页面 ​ 1) …

一个00后的自述:不好好学习的我后悔了

普通人家的孩子不读书,以后你能做什么? 以下是一个00后的自述: 我是2000年出生的,父亲是建筑工人,母亲是农民,我就是一个普通人家的孩子。 小时候,其实我的学习成绩也是不错的,但…

软考A计划-真题-分类精讲汇总-第五章(信息安全)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

JavaWeb技术栈

一个网页是怎么运行的? 首先网页想要运行,需要有静态资源他们负责页面的展示,如果我们想要页面产生互动效果,我们需要动态资源进行逻辑处理。同时,我们还需要数据库来存取数据。 进入一个网站,浏览器向服…

物联网时代25大开源IoT框架

相当长一段时间以来,互联网一直被用来连接人类并简化生活,这是21世纪初的启示。今天,我们将讨论各种物联网框架 —— 现在,我们正在进入一个基于互联网技术的新世界,该世界不仅连接人,而且还连接事物。因此…

实现分布式团队协作一体化的方法与技巧

多年来,零工经济平台的迅速兴起通过将自由职业者与支持按任务付费的企业联系起来,创造了多样化的就业机会。然而,能够接受临时工作安排既是福音又是祸根。在亚太地区,84%的招聘经理将工作外包给自由职业者。这背后的一个明显动机是…

Java对象创建和内存分配

Java对象创建流程如下步骤 判断是否加载类 当Java虚拟机执行一条new指令时,首先会检查这个指令的参数是否能在常量池中定位到类的符号引用,并且检查该类是否被加载、验证、准备、解析和初始化过。如果没有则执行加载过程。 给对象分配内存 对象所需的大…

【云原生】K8s管理工具--Kubectl(一)

Kubectl管理 一、陈述式管理1、陈述式管理方式2、Kubernetes相关信息查看3、查看节点状态4、命名空间操作5、deployment/pod操作6、扩缩容7、增加删除label 二、声明式管理1、声明式管理方式2、查看资源配置清单3、解释资源配置清单4、修改资源配置清单并应用5、删除资源配置清…

高级篇十三、事务基础知识

第13章_事务基础知识 1、数据库事务概述 事务是数据库区别文件系统的重要特性之一,当我们有了事务会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统的崩溃而丢失&#…

网络通信-路由交换基础

目录 一、一个简单网络通信(1v1) 二、通信介质 三、交换机通信原理(3v3、5v5) 广播的概念 交换机转发消息时,怎么知道该发给哪个设备 四、路由器通信原理(500v500、5000v5000) 五、消息分…