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.rhkb.cn/news/206311.html

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

相关文章

【Docker】从零开始:11.Harbor搭建企业镜像仓库

【Docker】从零开始&#xff1a;11.Harbor搭建企业镜像仓库 1. Harbor介绍2. 软硬件要求(1). 硬件要求(2). 软件要求 3.Harbor优势4.Harbor的误区5.Harbor的几种安装方式6.在线安装(1).安装composer(2).配置内核参数,开启路由转发(3).下载安装包并解压(4).创建并修改配置文件(5…

如何在VS2022上的MFC项目中操作Excel(VS2010、VS2012、VS2015、VS2017、VS2019使用方法一样)

先决条件 本机安装office2003、2007、2010、2016及以后版本&#xff0c;总之必须安装office导入Excel库文件&#xff0c;导入方式可参考&#xff1a; 如何在vs2017及以前版本(vs2010、vs2015)上添加 添加类型库中的MFC类如何在vs2019及以后版本(如vs2022)上添加 添加ActiveX控…

Python面试破解:return和yield的细腻差别

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python面试破解&#xff1a;return和yield的细腻差别&#xff0c;全文3000字&#xff0c;阅读大约10钟。 在Python的函数编程中&#xff0c;return和yield是两个常用的关键词…

UEditor编辑器实现上传图片自动加水印功能PHP源码

UEditor编辑器是百度旗下的免费开源富文本编辑器,使用很方便,但是也有缺点,比如,上传图片不能自动添加水印,下边我们就来说说如何在UEditor编辑器中自动实现上传图片添加水印功能,操作很简单。 首先找到UEditor/PHP目录下的Uploader.class.php的文件,打开该文件,找到以…

Java高级技术(单元测试)

一&#xff0c;概括 二&#xff0c;junit 三&#xff0c;案例 &#xff08;1&#xff09;&#xff0c;实验类 package com.bilibili;public class Name {public static void main(String name) {if (name null){System.out.println("0");return;}System.out.print…

Java(七)(Lambda表达式,正则表达式,集合(Collection,Collection的遍历方式))

目录 Lambda表达式 省略写法(要看懂) 正则表达式 语法 案例 正则表达式的搜索替换和分割内容 集合进阶 集合体系结构 Collection Collection的遍历方式 迭代器 增强for循环 Lambda表达式遍历Collection List集合 ArrayList LinkedList 哈希值 HashSet底层原理 …

2023 BUCT 计算方法实验报告

前言 Textlive版本&#xff1a;2023 textstudio版本&#xff1a;4.6.3 名字和日期在以下地方修改: 图片下载地址; figures.zip LiangCha_Xyy/Source - Gitee.com 如下图&#xff0c;.tex文件和figures文件夹放在同一路径下即可 .tex代码 \documentclass[UTF8]{ctexart} \usep…

软件测试编写文档模板【附文档模板】

一、测试岗位必备的文档 在一个常规的软件测试流程中&#xff0c;会涉及到测试计划、测试方案、测试用例、测试报告的编写&#xff0c;这些文档也是软件测试岗位必须掌握的文档类型。 1、测试计划 测试计划是组织管理层面的文件&#xff0c;从组织管理的角度对一次测试活动进…

Hive内置表生成函数

Hive内置UDTF 1、UDF、UDAF、UDTF简介2、Hive内置UDTF 1、UDF、UDAF、UDTF简介 在Hive中&#xff0c;所有的运算符和用户定义函数&#xff0c;包括用户定义的和内置的&#xff0c;统称为UDF&#xff08;User-Defined Functions&#xff09;。如下图所示&#xff1a; UDF官方文档…

揭示堆叠自动编码器的强大功能 - 最新深度学习技术

简介 在不断发展的人工智能和机器学习领域&#xff0c;深度学习技术由于其处理复杂和高维数据的能力而获得了巨大的普及。在各种深度学习模型中&#xff0c;堆叠自动编码器[1]作为一种多功能且强大的工具脱颖而出&#xff0c;用于特征学习、降维和数据表示。本文探讨了堆叠式自…

51单片机蜂鸣器发出悦耳的声音

51单片机蜂鸣器发出悦耳的声音 1.概述 这篇文章介绍单片机控制蜂鸣器入门小实验&#xff0c;通过该实验掌握蜂鸣器发声的原理&#xff0c;控制声音发出我们想听的音乐。 2.蜂鸣器发声 2.1.硬件原理 1.蜂鸣器正极接单片机20号引脚VCC&#xff0c;负极接19号引脚P1.7 2.20MH…

【前端开发】Next.js与Nest.js之间的差异2023

在快节奏的网络开发领域&#xff0c;JavaScript已成为构建可靠且引人入胜的在线应用程序的标准语言。然而&#xff0c;随着对适应性强、高效的在线服务的需求不断增加&#xff0c;开发人员通常不得不从广泛的库和框架中进行选择&#xff0c;以满足其项目的要求。Next.js和Nest.…

计算机毕业设计 基于Hadoop的物品租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

适用于电脑的5个免费文件恢复软件分享

适用于电脑的最佳免费文件恢复软件 任何计算机用户都可能经历过丢失重要文件的恐惧。重要数据的丢失可能会令人不安和沮丧&#xff0c;无论是由于不小心删除、计算机故障还是硬盘格式化造成的。幸运的是&#xff0c;在数字时代&#xff0c;您可以使用值得信赖的解决方案检索这些…

ELK+filebeat+kafka实现日志收集

ELKfilebeatkafka远程收集不同主机上的httpd、mysql 日志实验 实验目的&#xff1a;远程收集日志&#xff0c;高并发情况下流量削峰&#xff0c;异步通信 实验条件&#xff1a; 主机名 IP地址 作用 组件 硬件 集群 test1 20.0.0.10 异步通信 流量削峰 …… zookeeperk…

python循环语句和函数

1.使用for循环打印9*9乘法表 for i in range(1, 10):for j in range(1, i1):print(i, "*", j, "", i*j, end"\t")print()结果&#xff1a; 2.使用while循环打印9*9乘法表 i 1 while i < 10:j 1while j < i1:print(i, "*", j…

笔记(三)maxflow push relabel与图像分割

笔记&#xff08;三&#xff09;maxflow push relabel与图像分割 1. Push-Relabel算法思想2.Push-Relabel算法原理示意图3.Push-Relabel算法具体实例4. push relabel与图割 1. Push-Relabel算法思想 对于一个网络流图: 该算法直观可以这样理解&#xff0c;先在源节点处加入充足…

spring本地事务与单/多线程

请直接看原文 原文链接:多线程与数据库事务以及数据库连接之间的关系 - 知乎 (zhihu.com) -------------------------------------------------------------------------------------------------------------------------------- 今天我们来梳理一下&#xff0c; 多线程、数…

Linux 命令pwd

命令作用 pwd是Linux中一个非常有用而又十分简单的命令&#xff0c;pwd是词组print working directory的首字母缩写&#xff0c;即打印工作目录&#xff1b;工作目录就是你当前所处于的那个目录。 pwd始终以绝对路径的方式打印工作目录&#xff0c;即从根目录&#xff08;/&am…

如何在服务器上运行python文件

目录 前置准备 详细步骤 一&#xff0c;在服务器安装Anaconda 下载安装包 上传文件到服务器 安装环境 二&#xff0c;创建虚拟环境 创建环境 三&#xff0c;测试执行python文件 执行python文件 查看进程状态 总结 前置准备 如何在个人服务器上运行python文件&#x…