CSS:弹性盒子Flexible Box布局
CSS:Flexible Box弹性盒子布局
一、flex布局原理
flex是flexible Box的缩写,意为 ”弹性布局“,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。
-
当我们的父盒子设置为flex布局之后,子元素的 float 、clear 和 vertical-align 属性将会失效。
-
伸缩布局 = 弹性布局 = 伸缩盒布局 = 弹性盒布局 = flex布局
采用了 Flex布局的元素,称为 **Flex容器**(flex container),简称 ”容器“。它的所有子元素自动成为容器成员,称为**Flex项目**(flex item),简称”项目“。
**flex布局原理:**通过给父盒子添加 flex 属性,来控制子盒子的位置和排列方式。
二、flex布局父项常见属性
2.1 常见父项属性
以下由6个属性是对父元素设置的
- flex-direction:设置主轴的方向
- jusify-content:设置主轴上的子元素排列方式
- flex-wrap:设置子元素是否换行
- align-content: 设置侧轴上的子元素的排列方式(多行)
- align-items:设置侧轴上的子元素排列方式(单行)
- flex-flow: 复合属性,相当于同时设置了flex-direction 和 flex-wrap
2.2 flex-direction 属性
2.2.1主轴与侧轴
在flex布局中,是分为主轴和侧轴两个方向,同样的叫法有:行和列、x轴和y轴
-
默认主轴方向就是x轴反向,水平向右
-
默认侧轴方向就是y轴方向,水平向下
2.2.2 属性值
flex-direction属性决定主轴的方向(即项目的排列方向)
注意:主轴和侧轴是会变化的,就看flex-direction设置谁为主轴,剩下的就是侧轴。而我们的子元素是跟着主轴来排列的。
属性值 | 说明 |
---|---|
row | 默认值从左到右 |
row-reverse | 从右到左 |
column | 从上到下 |
column-reverse | 从下到上 |
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>flex布局</title></head><body><div><span>1</span><span>2</span><span>3</span></div></body>
</html><style>div{width: 800px;height: 300px;background-color: pink;/* 给父级添加flex属性 */display: flex;/* 默认的主轴是x轴 row y轴就是侧轴了 元素是跟着主轴来排列的 *//* flex-direction: row-reverse; *//* 将主轴设置为y轴,那么x轴就变为侧轴,元素是跟着主轴来排列的 */flex-direction: column;}div span{width: 150px;height: 100px;background-color: purple;}
</style>
界面展示效果:
2.3 justify-content 属性
justify-content属性是设置 主轴上的子元素对齐方式,定义了项目在主轴上的对齐方式
注意:使用这个属性之前一定要确定号主轴是x轴还是y轴。
属性值 | 说明 |
---|---|
flex-start | 默认值 从头部开始,如果主轴是x轴,则从左到右 |
flex-end | 从尾部开始排列 |
center | 在著有剧中对齐(如果主轴是x轴 则水平居中) |
space-around | 平均分剩余空间( 左边空间+右边空间的方式 ) |
space-between | 先两边贴边 在分剩余空间( 重要 ) |
2.4 flex-wrap属性
当下面这种情况出现时:父容器的长度在主轴上无法全部容下所有的项目时,子元素(项目)的主轴大小会被无线的缩小,子项目不会自动进行换行。就需要通过 flex-wrap属性来处理换行操作。
<body><div><span>1</span><span>2</span><span>3</span><!-- <span>4</span> --></div></body><style>div{width: 600px;height: 400px;background-color: pink;display: flex; //父容器flex布局flex-direction: row; //主轴方向}div span{width: 150px;height: 100px;background-color: purple;color: aliceblue;margin: 10px; //外边距}</style>
当添加多个 <span> </span> 标签时,子项目在主轴上的宽度会被无线收缩,而不会自动换行。
flex-wrap设置子元素是否换行,flex布局中的子元素是默认不换行,项目都排在一条线(又称为”轴线“)上,如果装不开,会缩小子元素的主轴上的大小。
属性值 | 说明 |
---|---|
nowrap | 默认值,不换行 |
wrap | 换行 |
<body><div><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span></div></body><style>div{width: 600px;height: 400px;background-color: pink;display: flex; /* //父容器flex布局 */flex-direction: row; /* //主轴方向 *//* justify-content:space-around; */flex-wrap: wrap;}div span{width: 150px;height: 100px;background-color: purple;color: aliceblue;margin: 10px; //外边距}</style>
换行后的效果:
2.5 align-items属性
设置侧轴上的子元素排列方式(单行)
该属性是控制子项在侧轴(默认是y轴)上的排列方式,在子项为单项的时候使用
属性值 | 说明 |
---|---|
flex-start | 默认值 从上到下 |
flex-end | 从下到上 |
center | 挤在一起居中(垂直居中) |
stretch | 拉伸(子项目没有设置高度的情况) |
<body><div><span>1</span><span>2</span><span>3</span></div>
</body>
<style>div{width: 600px;height: 400px;background-color: pink;display: flex; /* 父容器flex布局 */flex-direction: row; /* //主轴方向x */justify-content: center;align-items: center;}div span{width: 150px;height: 100px;background-color: purple;color: aliceblue;margin: 10px; //外边距}
</style>
2.6 align-content属性
设置轴上的子元素的排列方式(多行),设置子项目在侧轴上的排列方式,并且只能用于子项目出现了换行的情况(多行)。在单行下没有效果!
属性值 | 说明 |
---|---|
flex-start | 默认值,从侧轴的头部开始排列 |
flex-end | 从侧轴的尾部开始排列 |
center | 在侧轴的中间显示 |
space-around | 子项在侧轴平分剩余空间 |
space-between | 子项在侧轴上先分布到两头,在平凡甚于空间 |
stretch | 设置子元素高度平分父元素高度 |
align-items 和 align-content 区别:
- align-items适应单行情况下,只有上对齐、下对齐、居中和拉伸。
- align-content适用与多行的情况下(多行),单行无效。可以设置 上对齐、下对齐、居中对齐、拉伸 以及 平分剩余空间等操作
- 单行找 align-items 多行找 align-content
<body><div><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span></div>
</body>
<style>div{width: 600px;height: 400px;background-color: pink;display: flex; /* 父容器flex布局 */flex-direction: row; /* //主轴方向x */justify-content: center;/* align-items: center; 只是对单行起效 */flex-wrap: wrap;align-content: center;}div span{width: 150px;height: 100px;background-color: purple;color: aliceblue;margin: 10px; //外边距}
2.7 flex-flow
flex-flow 属性是我们 flex-direction (主轴方向)和 flex-wrap(是否换行) 属性的符合属性。
<body><div><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span></div>
</body>
<style>div{width: 600px;height: 400px;background-color: pink;display: flex; /* 父容器flex布局 */flex-flow: row wrap;align-content: center;}div span{width: 150px;height: 100px;background-color: purple;color: aliceblue;margin: 10px; //外边距}
</style>
三、flex布局中子项常用属性
flex子项中常见属性主要有一下三个:
- flex 子项占的份数
- align-self 控制子项自己在侧轴的排列方式
- order 定义子项的排列顺序(前后顺序)
3.1 flex 属性:
定义子项目来分配甚于空间,用flex来表示占多少份。
.item{
flex : <number> ; /* default 0 */
}
- 案例一:
<body><section><div>1</div><div>2</div><div>3</div></section>
</body>
<style>section {display: flex;width: 60%;height: 150px;background-color: pink;margin: 0 auto; //居中}section div:nth-child(1){width: 100px;height: 150px;background-color: red;}section div:nth-child(3){width: 100px;height: 150px;background-color: blue;}section div:nth-child(2){background-color: green;flex: 1;}
</style>
展示效果:
-
案例二:
<body><p><span>1</span><span>2</span><span>3</span></p> </body> <style>p {display: flex;width: 60%;height: 150px;background-color: pink;margin: 100px auto; //居中}p span {flex:1;background-color: chocolate;margin: 10px;} </style>
3.2 algin-self 属性
align-self 控制子项自己在侧轴上的排列方式。允许单个项目有与其他项目不一样的对齐方式。可覆盖 align-items属性。默认值为auto,表示继承父项目的 align-items 属性,如果没有父元素,同等与stretch。
<body><p><span>1</span><span>2</span><span>3</span></p>
</body>
<style>p {display: flex;width: 80%;height: 300px;background-color: pink;margin: 100px auto; /* 居中 *//* align-items:flex-end; z只想让3号盒子下对齐*/}p span {width: 150px;height: 100px;background-color: purple;margin-right: 5px;}p span:nth-child(3){/* 只改变3号盒子的对齐方式 */align-self: flex-end; }
</style>
3.2 order 属性
定义项目的排列顺序,数值越小,排列越靠前,默认为0。
注意:与 z-index 不一样。
<body><p><span>1</span><span>2</span><span>3</span></p>
</body>
<style>p {display: flex;width: 80%;height: 300px;background-color: pink;margin: 100px auto; /* 居中 *//* align-items:flex-end; z只想让3号盒子下对齐*/}p span {width: 150px;height: 100px;background-color: purple;margin-right: 5px;}p span:nth-child(3){/* 只改变3号盒子的对齐方式 */align-self: flex-end; /* 默认是0,-1更小,所有在前面 */order: -1;}
</style>
相关文章:

CSS:弹性盒子Flexible Box布局
CSS:Flexible Box弹性盒子布局 一、flex布局原理 flex是flexible Box的缩写,意为 ”弹性布局“,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。 当我们的父盒子设置为flex布局之后,子元素的 float 、clear 和 vert…...

java常用环境docker安装
配置目录 rocketmqredismysql不配置binlog配置binlog Nacoszookeeper 本文为精简安装,部分不带容器卷映射,仅供以学习使用。 rocketmq nameservice sudo docker run -d \ --privilegedtrue \ --name rmqnamesrv \ -p 9876:9876 \ -e "MAX_HEAP_SI…...

Code-Audit(代码审计)习题记录6-7
介绍: 自己懒得搭建靶场了,靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习,可以随地访问,本文所有的题目均来源于网站HSCSEC-Code Audit 6、习题6 题目内容如下: 源代…...
go 的使用总结
go的内存逃逸? go语言在编辑阶段通过逃逸分析把分配在栈上变量 分配到堆上去。 栈内存: 一段连续的内存,便于高效运行指令过程中的临时变量存储。 堆内存: 主要由垃圾回收器 回收没有被引用的指针。 逃逸分析:栈内…...

无线水电表智能化管理系统
无线水电表智能化管理系统是一项利用先进技术对水电用量进行实时监测和精细管理的创新系统。这一系统通过应用无线通讯技术,实现了水电表数据的远程传输和集中管理,为用户提供了便捷、精准的用能监测和管理服务。 无线水电表智能化管理系统的首要优势在于…...

发掘效率黑科技:Allure报告助您事半功倍提升测试效能!
Allure 简介与安装 Allure 是由 Java 语⾔开发的⼀个轻量级,灵活的测试报告⼯具。 Allure 多平台的 Report 框架。 Allure ⽀持多语⾔,包括 python、JaveScript、PHP、Ruby 等。 可以为开发/测试/管理等人员提供详尽的的测试报告,包括测试…...

Spring Web 过滤器使用常见错误(上)
我们都知道,过滤器是 Servlet 的重要标准之一,其在请求和响应的统一处理、访问日志记录、请求权限审核等方面都有着不可替代的作用。在 Spring 编程中,我们主要就是配合使用ServletComponentScan 和 WebFilter 这两个注解来构建过滤器。 说起…...

【数据结构】周末作业
1.new(struct list_head*)malloc(sizeof(struct list_head*)); if(newNULL) { printf("失败\n"); return; } new->nextprev->next; prev->nextnew; return; 2.struct list_head* pprev->next; prev->nextp->next; p->next->prevpr…...

java 企业培训管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
一、源码特点 java 企业培训管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…...

在SAP HANA中使用OData(二)
通常有两种方式通过OData来暴露SAP HANA中的数据库对象,一是直接使用Database Object,比如前一篇和本篇文章介绍的例子,这种方式针对于数据已经存在于SAP HANA中,在Repository中没有对应的设计时对象(Design-time Object)…...
【Docker】前端基于dockerfiel构建镜像部署,实现在容器启动时传递环境变量, 请求不同服务地址
前端部署采用 docker 的方式, 实现在容器启动时传递环境变量, 请求不同服务地址 实现思路: 定义.env.xxx 文件(环境变量赋值),在compose.yml中引入.env.xxx 文件,环境变量通过nginx的sub_filte…...
评估测试接口软件与网站的使用方法及优劣势比较
评估测试接口软件与网站的使用方法及优劣势比较 导言 在软件开发和测试过程中,对接口进行测试是至关重要的一步。测试接口的软件和网站提供了各种工具和方法,以便开发人员和测试人员能够有效地测试他们的应用程序接口。本文将探讨几种常见的测试接口软…...

【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)
文章目录 1. 介绍2. 实例使用2.1 登录界面2.2 对比两次密码是否相同2.3 通过按钮显示当前输入的密码(并对2.2进行优化)2.4 结语 3. 正则表达式3.1 QRegExp3.2 验证输入内容 4. 资源代码 1. 介绍 关于 QLineEdit 的详细介绍,可以去查阅官方文…...
Spring Boot 和 Spring Cloud: 区别与联系
Spring Boot 和 Spring Cloud: 区别与联系 在当今软件开发领域,微服务架构和快速开发成为了主流趋势。Spring框架作为Java生态系统中最流行的开发框架之一,也不例外地推出了Spring Boot和Spring Cloud这两个项目来满足这些需求。本文将详细探讨它们之间…...

9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作
内容参考于:易道云信息技术研究院VIP课 上一个内容:游戏底层功能对接类GameProc的实现 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:44c54d30370d3621c1e9ec3d7fa1e2a0…...

vue - - - - - vue3使用draggable拖拽组件
vue3使用draggable拖拽组件 一、组件安装二、插件使用三、遇到的问题1. missing required prop: “itemKey” 一、组件安装 yarn add vuedraggablenext // or npm i -S vuedraggablenext二、插件使用 <template><draggableitem-key"id"class&q…...
PHP语言常见面试题:请解释一下PHP是什么,以及它的主要用途是什么?
PHP,英文全称为Hypertext Preprocessor,中文名称为“超文本预处理器”。它是一种通用的开源脚本语言,特别适用于Web开发领域。PHP最初是由Rasmus Lerdorf在1995年创建的,并且自那时以来,它已经发展成为一个功能强大且易…...

Unity(第六部)向量的理解和算法
标量:只有大小的量。185 888 999 (类似坐标) 向量:既有大小,也有方向。(类似以个体为主体的方向,前方一百米) 向量的模:向量的大小。(类似以个体为主体的方向,前方一百米、只取一百米…...

TypeScript+React Web应用开发实战
💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在现代Web开发中,React和TypeScrip…...

android开发电子书,android基础编程
内存泄漏是什么? 内存泄漏即 ML (Memory Leak) 指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象 内存泄漏有哪些情况,对应的解决方案? 内存泄漏的原因归根到底就是当需…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...