当前位置: 首页 > news >正文

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的缩写,意为 ”弹性布局“&#xff0c;用来为盒状模型提供最大的灵活性&#xff0c;任何一个容器都可以指定为flex布局。 当我们的父盒子设置为flex布局之后&#xff0c;子元素的 float 、clear 和 vert…...

java常用环境docker安装

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

Code-Audit(代码审计)习题记录6-7

介绍&#xff1a; 自己懒得搭建靶场了&#xff0c;靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习&#xff0c;可以随地访问&#xff0c;本文所有的题目均来源于网站HSCSEC-Code Audit 6、习题6 题目内容如下&#xff1a; 源代…...

go 的使用总结

go的内存逃逸&#xff1f; go语言在编辑阶段通过逃逸分析把分配在栈上变量 分配到堆上去。 栈内存&#xff1a; 一段连续的内存&#xff0c;便于高效运行指令过程中的临时变量存储。 堆内存&#xff1a; 主要由垃圾回收器 回收没有被引用的指针。 逃逸分析&#xff1a;栈内…...

无线水电表智能化管理系统

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

发掘效率黑科技:Allure报告助您事半功倍提升测试效能!

Allure 简介与安装 Allure 是由 Java 语⾔开发的⼀个轻量级&#xff0c;灵活的测试报告⼯具。 Allure 多平台的 Report 框架。 Allure ⽀持多语⾔&#xff0c;包括 python、JaveScript、PHP、Ruby 等。 可以为开发/测试/管理等人员提供详尽的的测试报告&#xff0c;包括测试…...

Spring Web 过滤器使用常见错误(上)

我们都知道&#xff0c;过滤器是 Servlet 的重要标准之一&#xff0c;其在请求和响应的统一处理、访问日志记录、请求权限审核等方面都有着不可替代的作用。在 Spring 编程中&#xff0c;我们主要就是配合使用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信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

在SAP HANA中使用OData(二)

通常有两种方式通过OData来暴露SAP HANA中的数据库对象&#xff0c;一是直接使用Database Object&#xff0c;比如前一篇和本篇文章介绍的例子&#xff0c;这种方式针对于数据已经存在于SAP HANA中&#xff0c;在Repository中没有对应的设计时对象(Design-time Object)&#xf…...

【Docker】前端基于dockerfiel构建镜像部署,实现在容器启动时传递环境变量, 请求不同服务地址

前端部署采用 docker 的方式&#xff0c; 实现在容器启动时传递环境变量&#xff0c; 请求不同服务地址 实现思路&#xff1a; 定义.env.xxx 文件&#xff08;环境变量赋值&#xff09;&#xff0c;在compose.yml中引入.env.xxx 文件&#xff0c;环境变量通过nginx的sub_filte…...

评估测试接口软件与网站的使用方法及优劣势比较

评估测试接口软件与网站的使用方法及优劣势比较 导言 在软件开发和测试过程中&#xff0c;对接口进行测试是至关重要的一步。测试接口的软件和网站提供了各种工具和方法&#xff0c;以便开发人员和测试人员能够有效地测试他们的应用程序接口。本文将探讨几种常见的测试接口软…...

【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)

文章目录 1. 介绍2. 实例使用2.1 登录界面2.2 对比两次密码是否相同2.3 通过按钮显示当前输入的密码&#xff08;并对2.2进行优化&#xff09;2.4 结语 3. 正则表达式3.1 QRegExp3.2 验证输入内容 4. 资源代码 1. 介绍 关于 QLineEdit 的详细介绍&#xff0c;可以去查阅官方文…...

Spring Boot 和 Spring Cloud: 区别与联系

Spring Boot 和 Spring Cloud: 区别与联系 在当今软件开发领域&#xff0c;微服务架构和快速开发成为了主流趋势。Spring框架作为Java生态系统中最流行的开发框架之一&#xff0c;也不例外地推出了Spring Boot和Spring Cloud这两个项目来满足这些需求。本文将详细探讨它们之间…...

9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;游戏底层功能对接类GameProc的实现 码云地址&#xff08;master 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/titan 码云版本号&#xff1a;44c54d30370d3621c1e9ec3d7fa1e2a0…...

vue - - - - - vue3使用draggable拖拽组件

vue3使用draggable拖拽组件 一、组件安装二、插件使用三、遇到的问题1. missing required prop&#xff1a; “itemKey” 一、组件安装 yarn add vuedraggablenext // or npm i -S vuedraggablenext二、插件使用 <template><draggableitem-key"id"class&q…...

PHP语言常见面试题:请解释一下PHP是什么,以及它的主要用途是什么?

PHP&#xff0c;英文全称为Hypertext Preprocessor&#xff0c;中文名称为“超文本预处理器”。它是一种通用的开源脚本语言&#xff0c;特别适用于Web开发领域。PHP最初是由Rasmus Lerdorf在1995年创建的&#xff0c;并且自那时以来&#xff0c;它已经发展成为一个功能强大且易…...

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 &#xff08;类似坐标&#xff09; 向量:既有大小&#xff0c;也有方向。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米&#xff09; 向量的模:向量的大小。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米、只取一百米…...

TypeScript+React Web应用开发实战

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在现代Web开发中&#xff0c;React和TypeScrip…...

android开发电子书,android基础编程

内存泄漏是什么&#xff1f; 内存泄漏即 ML &#xff08;Memory Leak&#xff09; 指 程序在申请内存后&#xff0c;当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象 内存泄漏有哪些情况&#xff0c;对应的解决方案&#xff1f; 内存泄漏的原因归根到底就是当需…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...