css flex布局 —— 项目属性 flex-shrink

news/2024/5/3 18:52:52/文章来源:https://blog.csdn.net/HH18700418030/article/details/127006977

定义

flex-shrink 属性定义了项目的收缩规则。

flex-shrink 主要处理当 flex 容器空间不足时候,单个元素的收缩比例。当父元素的宽度小于子元素宽度之和并且超出了父元素的宽度时,flex-shrink 就会按照一定的比例进行收缩:将子元素宽度之和与父元素宽度的差值按照子元素 flex-shrink 的值分配给各个子元素,每个子元素原本宽度减去按比例分配的值,其剩余值为实际宽度。

flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。

注意:如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。

默认为1,即如果空间不足,该项目将缩小。

语法

.item {flex-shrink: number|initial|inherit; /* default 1 (负值对该属性无效) */
}

number :一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 1
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。

  • 如果所有项目的 flex-shrink 属性都为1,当空间不足时,都将等比例缩小。

  • 如果一个项目的 flex-shrink 属性为0,其他项目都为1,则空间不足时,前者不缩小。

flex-shrink 为0

实例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.container {display: flex;margin: 0px auto;width: 380px;height: 100px;background-color: #e6e6e6;}.item {/* flex-basis属性定义了项目占据主轴空间(main size)大小。 */flex-basis: 100px;height: 50px;/* flex-shrink 属性定义项目的缩小系数 */flex-shrink: 0;}.container div:nth-of-type(1) { background-color:coral;}.container div:nth-of-type(2) { background-color:lightblue;}.container div:nth-of-type(3) { background-color:khaki;}.container div:nth-of-type(4) { background-color:pink;}</style>
</head>
<body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div></div>
</body>
</html>

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

如上图,flex-shrink 为 0 时,不压缩项目。

flex-shrink大于1

实例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.container {display: flex;margin: 0px auto;width: 650px;height: 100px;background-color: #e6e6e6;}.item {   height: 50px;      }.container div:nth-of-type(1) { flex-basis: 50px;flex-shrink: 0;background-color:coral;}.container div:nth-of-type(2) { flex-basis: 100px;flex-shrink: 1;background-color:lightblue;}.container div:nth-of-type(3) { flex-basis: 500px;flex-shrink: 2;background-color:khaki;}.container div:nth-of-type(4) { flex-basis: 300px;flex-shrink: 3;background-color:pink;}</style>
</head>
<body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div></div>
</body>
</html>

页面效果:
请添加图片描述

主轴长度为650px,子元素溢出的空间:50+100+500+300-650 = -300px

第一个 div 设置了 flex-shrink: 0 所以不收缩,那这 -300px 将由剩下的三个元素的 div 分别收缩一定的量来弥补。

项目 2 占据 100px, 项目 3 占据 500px, 项目 4 占据 300px, 每个项目的 flex-shrink 属性值分别为1,2,3,则总权重为 100px * 1 + 500px * 2 + 300px * 3 = 2000px,所以,每个项目的权重分别为为:

- 项目2: (100px * 1) / 2000px = 0.05;
 - 项目3: (500px * 2) / 2000px = 0.5;
 - 项目4: (300px * 2) / 2000px = 0.45;
 
接下来,计算每个项目分别缩小的空间:

- 项目2: 300px * 0.05 = 15px;
 - 项目3: 300px * 0.50 = 150px;
 - 项目4: 300px * 0.45 = 135px;

flex-shrink小于1

flex-shrink 的值为小数时,分两种情况:

1)所有 flex 项的 flex-shrink 属性值之和大于1,仍然按照上面的方式进行计算;
2)所有 flex 项的 flex-shrink 属性值之和小于1,只收缩溢出空间的一部分。

实例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.container {display: flex;margin: 0px auto;width: 650px;height: 100px;background-color: #e6e6e6;}.item {   height: 50px;      }.container div:nth-of-type(1) { flex-basis: 50px;flex-shrink: 0;background-color:coral;}.container div:nth-of-type(2) { flex-basis: 100px;flex-shrink: 0.1;background-color:lightblue;}.container div:nth-of-type(3) { flex-basis: 500px;flex-shrink: 0.2;background-color:khaki;}.container div:nth-of-type(4) { flex-basis: 300px;flex-shrink: 0.3;background-color:pink;}</style>
</head>
<body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div></div>
</body>
</html>

所有 flex 项的 flex-shrink 属性值之和小于1,只收缩溢出空间的一部分,项目2为 0.1, 项目3为 0.2, 项目4为 0.3,总的收缩空间为:300px * (0.1 + 0.3 + 0.2) = 180px

每个项的权重计算方式是不变的,每个项目分别缩小:
 - 项目2: 180px * 0.05 = 9px;
 - 项目3: 180px * 0.50 = 90px;
 - 项目4: 180px * 0.45 = 81px;

页面效果:
请添加图片描述

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

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

相关文章

django+pyecharts制作工单系统实时刷新可视化仪表盘并设置报表定时发送

目录 仪表盘整体项目文件夹结构 demo应用效果 demo应用 demo应用的sql语句 demo应用定义的查询mysql类 在demo/views.py文件中 demo应用部分完整代码 urls.py views.py index.html 没有模糊背景 bindex.html 有模糊背景 demo2应用 demo2应用效果 2,将demo和demo2应用结…

Servlet入门学习笔记

目录 一、前置知识&#xff1a;Maven &#x1f34e;初识Maven &#x1f34e;Maven的使用 二、Servlet &#x1f351; 第一个Servlet程序&#xff1a;hello world 1、创建Maven项目 2、引入依赖 3、创建目录结构 4、编写servlet代码 5、打包 6、部署 7、验证程序 &a…

【Python】Python下载及安装(windows系统)

Python下载及安装&#xff08;windows系统&#xff09;下载安装包安装程序配置PATH其他问题下载安装包 浏览器访问下载地址&#xff0c;下载windows的最新版本 安装程序 双击程序安装 1、立即安装&#xff0c;会直接在下面的安装路径下安装&#xff0c;默认C盘 2、自定义安装…

Day7——四数相加||、赎金信、三数之和、四数之和

算法训练的第七天 目录 前言 一、四数相加|| 暴力解法思路&#xff1a; 哈希解法思路&#xff1a; 二、赎金信 解题思路&#xff1a; 三、三数之和 解题思路&#xff1a; 四、四数之和&#xff1a; 解题思路&#xff1a; 总结 前言 今日文案&#xff1a; 许多事情看…

在哪能查到英文论文?

不论是撰写英文论文还是引用外文文献&#xff0c;写论文的过程中想必缺不了检索合适的英文论文这个步骤&#xff0c;在本篇内容里&#xff0c;不仅教会你如何查到英文论文&#xff0c;还要教会你怎么样快速找到合适的英文论文&#xff01;听起来是不是令人心驰神往&#xff0c;…

facebook、Netflix 10倍速工程效能提升实践

工程效能是什么呢&#xff1f;工程效能是研发团队能够持续为用户产生有效价值的效率&#xff0c;包括有效性、效率和可持续性三个方面。一提到工程效能&#xff0c;大家脑子里马上会浮现持续构建、持续发布、开发流程改进等词汇&#xff0c;往往会忽略有效性。有效性&#xff0…

若依微服务项目本地启动

1.项目地址 https://gitee.com/y_project/RuoYi-Cloud 使用git本地克隆 git clone https://gitee.com/y_project/RuoYi-Cloud2.导入数据库 1.将下图的两个数据库导入ry-cloud数据库 2.导入nacos和seata的数据库里面有键数据库语句直接运行即可 3.下载nacos 1.下载地址 http…

05-运算符

文章目录算数运算符算数运算符执行的优先级顺序赋值运算符一元运算符自增运算符使用比较运算符逻辑运算符运算符优先级 *算数运算符 掌握算数运算符&#xff0c;能写出一些具备运算能力的小程序 数学运算符也叫算数运算符&#xff0c;主要包括加、减、乘、除、取余&#xff0…

ArcGIS中高风险地区热力图制作

一、数据来源及介绍 吉林省长春市中高风险地区名录 登陆微信&#xff0c;查找国家政务服务平台小程序&#xff0c;点击各地疫情风险等级查询&#xff0c;即可查看各地区中高风险地区所在地。 长春市行政边界数据 行政边界数据来源于阿里云数据可视化平台&#xff08;DataV…

后缀数组原理

一 点睛 在字符串处理中&#xff0c;后缀树和后缀数组都是非常有力的工具&#xff0c;后缀数组是后缀树的一个非常精巧的替代品&#xff0c;比后缀树更容易实现&#xff0c;可以实现后缀树的很多功能&#xff0c;时间复杂度也不逊色&#xff0c;比后缀树所占用的空间也小很多。…

0 引言和准备

14天阅读挑战赛 努力是为了不平庸&#xff01;这句话可能有些道理 本文概要&#xff1a; 本专栏是想挑战下阅读《趣味算法》一书&#xff1b; 本文主要是开读前&#xff0c;记录一下对本书的理解&#xff0c;和设定一个计划目标。同时&#xff0c;也简单总结了下&#xff0c;对…

DES加密原理描述与分析

目录1.简介2.加密原理2.1 加密步骤2.2 子密钥生成3.解密原理4.安全性5. 3DES 1.简介数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。…

【linux】 第4回 Xshell安装操作

1. 虚拟机关键配置名词解释 1. 虚拟⽹络编辑器说明桥接模式(可以访问互联⽹!!!)配置的地址信息和物理主机⽹段地址信息相同, 容易造成地址冲突NAT模式(可以访问互联⽹!!!)配置的地址信息和物理主机⽹段地址信息不同, 造成不了地址冲突仅主机模式 (不可以访问互联⽹)获取…

GIS Office国产基础软件,助力移动通信基础资源管理建设工程

万物互联&#xff0c;移动5G时代的蓬勃发展&#xff0c;为我们带来高速率、低时延、大连接的网络与通信体验&#xff0c;这离不开移动通信的基础资源管理建设工程。 面对种类繁多、设备资源管理要求极高且庞大的设备量&#xff0c;如何建立一个简单、高效的设备管理流程&#x…

AWS云服务器申请

目录 一、云服务器申请 &#xff08;一&#xff09;前言 &#xff08;二&#xff09;准备工作 &#xff08;三&#xff09;申请 &#xff08;四&#xff09;创建实例 &#xff08;五&#xff09;配置弹性IP &#xff08;六&#xff09;连接服务器实例 &#xff08;七&am…

Android studio 最新版本(2022.3.1)的Logcat用法

1 1、package: 以包名过滤日志&#xff0c; 预设 package:mine 表示用当前运行的应用包名进行过滤 2、level: 以优先级过滤日志 level:VERBOSE // 显示所有信息 level:DEBUG // 显示调试信息 level:INFO // 显示一般信息 level:WARN // 显示警告信息 level:ERROR // 显示…

Excel的简单编程

Excel的简单编程 主要内容&#xff08;这张图里有上索引[A,B,C……]&#xff0c;左索引[1,2,3……]&#xff0c;方便理解语法&#xff09; 内容同上&#xff08;该表主要是为了方便复制&#xff09; 算法d1d2d3d4d5举例语法输出加法12~~~d1d2“B2C2”3减法12~~~d2-d1“C3-B3”…

BSP Day48

今天继续来看看文件的东西 FILE结构体 C语言的stdio.h头文件中&#xff0c;定义了用于文件操作的结构体FILE。这样&#xff0c;我们通过fopen返回一个文件指针(指向FILE结构体的指针)来进行文件操作。可以在stdio.h(位于visual studio安装目录下的include文件夹下)头文件中查…

【交叉编译踩坑指北(三)】Linux下VScode构建数莓派Pico开发环境

写在前面 第二章表明,arm-none-eabi工具虽然单独使用会报错,但是只要结合CMake就可以正常使用.   而Window系统下,使用CMake调用MinGW Makefiles,那么是不是可以在Linux下使用CMake调用Linux原生make(即Unix Makefiles)构建目标文件呢?这个问提就好比出发点相同(都是CMake),…

linux 内核编译问题汇总

一、编译设备树时找不到设备树包含的头文件设备树包中包含的头文件会到kernel/scripts/dtc/include-prefixes/dt-bindings目录下去查找(新版本内核),而dt-bindings目录是软链接到kernel/include/dt-bindings目录下的。include-prefixes下的其它目录也都是软连接,如下所示如果…