CSS之弹性盒子Flexible Box

我想大家在做布局的时候,没接触flex布局之前,大家都是用浮动来布局的,但现在我们接触了flex布局之后,我只能说:“真香”。让我为大家介绍一下弹性盒子模型吧!
Flexible Box 弹性盒子
在我们使用弹性盒子时,我们需要给父级添加display:flex;
这是没给父级添加display:flex;时的样子:
在这里插入图片描述

这是给父级添加了display:flex;时的样子:
在这里插入图片描述
大家看,这是不是浮动该做的事情呀,我们flex也可以做,而且可以更简单更轻松的完成我们的布局,让我为大家介绍一下吧!
写在父级上常用的属性

一.父级添加

1.display:flex(给父级添加)

不添加这个是开启不了flex布局的,flex的其他方法全部没有效果

        .father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 400px;background-color: orange;}.father .son {font-size: 20px;width: 100px;height: 100px;}

2.flex-direction(给父级添加)

改变主轴方向

属性值描述
row默认值,主轴水平,子元素从左到右排列
row-reverse主轴水平,子元素从右到左排列
column主轴垂直,子元素从上到下排列
column-reverse主轴垂直,子元素从下到上排列

效果图:
row:
在这里插入图片描述
row-reverse:
请添加图片描述

column:
在这里插入图片描述

column-reverse:
在这里插入图片描述

flex-direction代码总结:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>display</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;flex-direction: row; /* 默认值 *//* flex-direction: row-reverse; *//* flex-direction: column; *//* flex-direction: column-reverse; */}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;}.father .son:nth-child(2){background-color: red;}.father .son:nth-child(3){background-color: yellow;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

3.justify-content(给父级添加)

设置主轴上子元素的对齐方式

属性值描述
flex-start默认值,所有子元素与主轴起始线对齐
center所有子元素与主轴中心线对齐
flex-end所有子元素与主轴终止线对齐
space-around平均分配剩余空间但左右缝隙是中间的一半
space-between先紧贴两边再平分剩余空间
space-evenly平均分配空间

效果图:
flex-start:
在这里插入图片描述
center:
在这里插入图片描述
flex-end:
在这里插入图片描述
space-around:
在这里插入图片描述
space-between:
在这里插入图片描述
space-evenly:
在这里插入图片描述
flex-direction代码总结:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>justify-content</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;justify-content: flex-start;/* justify-content: center; *//* justify-content: flex-end; *//* justify-content: space-around; *//* justify-content: space-between; *//* justify-content: space-evenly; */}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;}.father .son:nth-child(2){background-color: red;}.father .son:nth-child(3){background-color: yellow;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

4.flex-wrap(给父级添加)

设置子元素是否换行

属性值描述
nowrap默认值,默认不换行,在一行显示
wrap换行显示,第一行顶在上方
wrap-reverse换行显示,第一行顶在下方

效果图:
nowrap:
在这里插入图片描述

wrap:

在这里插入图片描述
wrap-reverse:
在这里插入图片描述
flex-wrap代码总结:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flex-wrap</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;flex-wrap: nowrap;/* flex-wrap: wrap; *//* flex-wrap: wrap-reverse; */}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 150px;height: 100px;}.father .son:nth-child(1){background-color: pink;}.father .son:nth-child(2){background-color: red;}.father .son:nth-child(3){background-color: yellow;}.father .son:nth-child(4){background-color: hotpink;}.father .son:nth-child(5){background-color: blue;}.father .son:nth-child(6){background-color: green;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div><div class="son">4</div><div class="son">5</div><div class="son">6</div></div>
</body>
</html>

5.align-items(给父级添加)

设置侧轴上的子元素排列方式(单行)
**特别注意:**这是单行的情况下

属性值描述
stretch默认值,如果子级没高度,各行将会伸展以占用剩余的空间
flex-start所有子元素与侧轴起始线对齐
flex-end所有子元素与侧轴中终止线对齐
center所有子元素与侧轴中心线对齐

效果图:
stretch(当没给子级高度时):
在这里插入图片描述
flex-start:
在这里插入图片描述
flex-end:
在这里插入图片描述
center:
在这里插入图片描述
align-items:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>align-items</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;/* align-items: stretch; */align-items: flex-start;/* align-items: flex-end; *//* align-items: center; */}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 150px;height: 100px;}.father .son:nth-child(1){background-color: pink;}.father .son:nth-child(2){background-color: red;}.father .son:nth-child(3){background-color: yellow;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

6.align-content(给父级添加)

设置侧轴上子元素的排列方式(多行)
需要与flex-wrap一起使用
注意:多行的情况下,修改 flex-wrap 属性的行为,类似 align-items, 但不是设置子元素对齐,而是设置行对齐

属性值描述
stretch默认值,如果子级没高度,各行将会伸展以占用剩余的空间
flex-start所有子元素与侧轴起始线对齐
flex-end所有子元素与侧轴中终止线对齐
center所有子元素与侧轴中心线对齐
space-around平均分配剩余空间但上下缝隙是中间的一半
space-between先紧贴两边再平分剩余空间
space-evenly平均分配空间

效果图:
stretch:
在这里插入图片描述
flex-start:
在这里插入图片描述
flex-end:
在这里插入图片描述
center:
在这里插入图片描述

space-around:
在这里插入图片描述
space-between:
在这里插入图片描述
space-evenly:
在这里插入图片描述
align-content:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>align-content</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;flex-wrap: wrap;/* align-content: stretch; */align-content: flex-start;/* align-content: flex-end; *//* align-content: center; *//* align-content: space-around; *//* align-content: space-between; *//* align-content: space-evenly; */}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 150px;height: 100px;}.father .son:nth-child(1){background-color: pink;}.father .son:nth-child(2){background-color: red;}.father .son:nth-child(3){background-color: yellow;}.father .son:nth-child(4){background-color: hotpink;}.father .son:nth-child(5){background-color: blue;}.father .son:nth-child(6){background-color: green;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div><div class="son">4</div><div class="son">5</div><div class="son">6</div></div>
</body>
</html>

7.flex-flow(给父级添加)

复合属性,把设置主轴方向和是否换行(换列)简写
语法:flex-flow :主轴方向 是否换行;
主轴方向与是否换行请看2与4的介绍

二.子级添加

1.align-self

用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。
注:给子元素设置

属性值描述
auto默认值,计算值为元素的父元素的’align-items’值,如果其没有父元素,则计算值为’stretch’。
flex-start弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界
flex-end弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界
center弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)
stretch在交叉轴方向上拉伸
baseline如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐

效果图:
auto:
在这里插入图片描述
flex-start:
在这里插入图片描述

flex-end:
在这里插入图片描述

center:
在这里插入图片描述

align-self代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flex-self</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;}.father .son:nth-child(2){background-color: red;align-self: auto;/* align-self: flex-start; *//* align-self: flex-end; *//* align-self: center; *//* align-self: stretch; *//* align-self: baseline; */}.father .son:nth-child(3){background-color: yellow;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

2.order(子级添加)

弹性子元素,排序,用整数值来定义排列顺序,数值小的排在最前面,可以 为负值,属性设置弹性容器内弹性子元素属性

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>order</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;order: 1;}.father .son:nth-child(2){background-color: red;order: 0;}.father .son:nth-child(3){background-color: yellow;order: -1;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

3.flex-grow

用来分配剩余空间,需要主轴上有剩余空间

属性值描述
initial默认值与0一样
0不放大也不缩小
number正数
flex-grow每一份都为1时:

在这里插入图片描述
但第一个元素为1,第二个为2,第三个为3时:
在这里插入图片描述
flex-grow代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flex-grow</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;flex-grow: 1;}.father .son:nth-child(2){background-color: red;flex-grow: 2;}.father .son:nth-child(3){background-color: yellow;flex-grow: 3;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

4.flex-base

会覆盖之前的width宽度,但该属性会被项目的min-width/min-height值覆盖
会自动计算主轴是否有多余空间

属性值描述
auto默认值,不发生改变
%百分比
像素px

我们给son1设置flex-base,如果3个元素的总宽度超出了父级,son1还会继续变宽吗?
在这里插入图片描述
会继续变宽,这是伸缩盒模型的缩,当我们宽度超出父级的时候,会缩回,让他们的宽度总和为600px
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flex-base</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;flex-basis: 800px;}.father .son:nth-child(2){background-color: red;}.father .son:nth-child(3){background-color: yellow;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

6.flex-shrink

flex-shrink 主要处理当 flex 容器空间不足时候,单个元素的收缩比例,当超出父级宽度时,每个子元素原本宽度减去按比例分配的值,其剩余值为实际宽度
当前子元素宽度超出了主轴空间多少: 子元素的总宽度 - 父级的宽度 = 需要消化的宽度
子元素子元素的收缩因子之和: n
每一份就是: 需要消化的宽度/n = f
每一个项目: 子元素的宽度- shrink的份数 * f = 缩放的宽度

在这里插入图片描述
flex-shrink代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flex-base</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;width: 420px;flex-shrink: 1;}.father .son:nth-child(2){background-color: red;flex-shrink: 1;}.father .son:nth-child(3){background-color: yellow;flex-shrink: 1;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

7.flex

项目缩放的简写,可以简写flex-grow flex-base flex-shrink
语法: flex: flex-grow flex-shrink flex-basis
推荐使用flex方法
常用:flex:1;对应flex: 1 1 auto
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flex</title><style>.father {/* 给父级宽高,开启弹性盒子布局 */display: flex;width: 600px;height: 300px;background-color: orange;}.father .son {text-align: center;line-height: 100px;font-size: 30px;width: 100px;height: 100px;}.father .son:nth-child(1){background-color: pink;flex: 1;}.father .son:nth-child(2){background-color: red;flex: 1;}.father .son:nth-child(3){background-color: yellow;flex: 1;}</style>
</head>
<body><div class="father"><div class="son">1</div><div class="son">2</div><div class="son">3</div></div>
</body>
</html>

感谢大家阅读,如有不对的地方,可以向我提出,感谢大家!

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

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

相关文章

【算法】链表-20231127

这里写目录标题 一、面试题 02.02. 返回倒数第 k 个节点二、82. 删除排序链表中的重复元素 II三、141. 环形链表 一、面试题 02.02. 返回倒数第 k 个节点 提示 简单 130 相关企业 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&#xff1a;本…

Linux(8):BASH

硬件、核心与 Shell 操作系统其实是一组软件&#xff0c;由于这组软件在控制整个硬件与管理系统的活动监测&#xff0c;如果这组软件能被用户随意的操作&#xff0c;若使用者应用不当&#xff0c;将会使得整个系统崩溃。因为操作系统管理的就是整个硬件功能。 应用程序在最外层…

前端(HTML + CSS + JS)

文章目录 一、HTML1. 概念&#xff08;1&#xff09;HTML 文件基本结构&#xff08;2&#xff09;HTML代码框架 2. 、HTML常见标签 二、CSS1. CSS基本语法规范2. 用法&#xff08;1&#xff09; 引用方式&#xff08;2&#xff09;选择器&#xff08;3&#xff09;常用元素属性…

NX二次开发UF_CURVE_ask_trim 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_trim Defined in: uf_curve.h int UF_CURVE_ask_trim(tag_t trim_feature, UF_CURVE_trim_p_t trim_info ) overview 概述 Retrieve the current parameters of an a…

利用STM32和MFRC522 IC实现智能卡的读取和数据存储

利用STM32微控制器和MFRC522 RFID读写器芯片&#xff0c;可以实现智能卡的读取和数据存储功能。智能卡是一种集成了RFID技术和存储芯片的卡片&#xff0c;它可以用于身份验证、门禁控制、支付系统等应用场景。下面将介绍如何使用STM32和MFRC522芯片进行智能卡的读取和数据存储&…

3.OpenResty系列之Nginx反向代理

1. Nginx简介 Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器 什么是反向代理&#xff1f; 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受 internet 上的连接请求&#x…

4面试题--数据库(补充)

隔离性问题 若不考虑隔离性则会出现以下问题 1. 脏读&#xff1a;指⼀个事务在处理数据的过程中&#xff0c;读取到另⼀个 未提交 事务的数据 2. 不可重复读&#xff1a;指对于数据库中的某个数据&#xff08;同⼀个数据项&#xff09;&#xff0c;⼀个事务内的多次查询却…

docker打包前端镜像

文章目录 一、构建镜像二、查看本地镜像三、启动容器四、查看启动的容器五、保存镜像六、读取镜像七、创建镜像八、最后 docker官网 一、构建镜像 -t是给镜像命名&#xff0c;.(点)是基于当前目录的Dockerfile来构建镜像 docker build -t image_web .二、查看本地镜像 docke…

使用echars实现数据可视化

生活随笔 展翅飞翔之际 请下定决心不再回头 echars实现数据可视化 在搭建后台页面时&#xff0c;可能会遇到很多的表格&#xff0c;但有时表格所展现的数据并不能直观的体现出当前用户的宏观信息&#xff0c;所以就可以引入一个新的表格插件——echars 快速上手 - Handbook…

某软件商店app抓包分析与sign加密算法实现

文章目录 1. 写在前面2. 抓包配置3. 抓包分析4. 接口测试5. sign加密算法6. 数据效果展示 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】…

通用电气调查网络攻击和数据盗窃指控

通用电气正在调查有关威胁行为者在网络攻击中破坏了公司开发环境并泄露据称被盗数据的指控。 通用电气 (GE) 是一家美国跨国公司&#xff0c;业务涉及电力、可再生能源和航空航天行业。 本月早些时候&#xff0c;一个名为 IntelBroker 的威胁行为者试图在黑客论坛上以 500 美…

人工智能_机器学习051_支持向量机SVM概念介绍_理解support vector machine---人工智能工作笔记0091

在出现深度学习,神经网络算法之前,支持向量机已经可以解决很多问题了,我们自然界中的问题,无非就是可以转换为回归问题和分类问题. 然后从现在开始我们来看支持向量机,首先看一下这几个字 support 是支持 vector是向量的意思,然后 machine指的是机器 那么我们之前用到的模型…

常见树种(贵州省):021冬青、连香树、白辛树、香合欢、云贵鹅耳枥、肥牛树、杜英、格木、黄连木、圆果化香树、南天竹

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、冬青 …

AIGC ChatGPT 4 快速整理不规则数据

从业务系统中采集到的数据如下: 序号 省份 英文 2022年销售额 2021年销售额 增量 1 广东guangDOng129068.58 124319.67 4748.91 2 江苏 JiangSu 122825.6 116314.2 6511.4 3 山东ShAnDong 87385 83045.9 4339.1 4 浙江…

手把手教会你--Hack The Box的账号注册(HTB Labs部分)

有什么问题&#xff0c;请尽情问博主&#xff0c;QQ群796141573 前言1.1 一次注册正确的注册过程1.2 讲讲我在注册过程中遇到的两个问题&#xff08;1&#xff09;点击REGISTER后无反应&#xff08;2&#xff09;提示Error! reCaptcha validation failed 前言 请务必跟着博主复…

网络爬虫(Python:Selenium、Scrapy框架;爬虫与反爬虫笔记)

网络爬虫&#xff08;Python&#xff1a;Selenium、Scrapy框架&#xff1b;爬虫与反爬虫笔记&#xff09; SeleniumWebDriver 对象提供的相关方法定位元素ActionChains的基本使用selenium显示等待和隐式等待显示等待隐式等待 Scrapy&#xff08;异步网络爬虫框架&#xff09;Sc…

【docker系列】docker高阶篇

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)

分析&#xff1a; 在程序中&#xff0c;定义一个函数 fix&#xff0c;该函数使用指针变量来访问字符串中的每个字符&#xff0c;并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p&#xff0c;表示需要计算长度的字符串。 在主函数 main 中&#xff0c;定义一…

【Dockerfile】将自己的项目构建成镜像部署运行

目录 1.Dockerfile 2.镜像结构 3.Dockerfile语法 4.构建Java项目 5.基于Java8构建项目 1.Dockerfile 常见的镜像在DockerHub就能找到&#xff0c;但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像&#xff0c;就必须先了解镜像的结构才行。 2.镜像结构 镜…

5G NSA注册解析及图标显示方案

5G NSA注册解析及图标显示方案 1. NSA注册流程解析1.1 NSA注册流程1.2 NAS消息信元变化1.3 UE能力信元变化1.3.1 第一次UE能力查询1.3.2 后续UE能力查询1.3.3 UE能力过滤器解析 1.4 UE测量配置1.5 SCG添加消息解析1.6 SCG添加成功1.7 Split Bearer承载的建立1.8 NR协议查询索引…