flex布局中理解flex-grow、flex-shrink、flex-basis属性

news2024/11/20 11:30:26

参考博客:
深入理解flex布局的flex-grow、flex-shrink、flex-basis

flex-basis属性

flex-basis设置子项目占据的空间大小, 如果指定flex-basis的值,则子项目会占用所设置的值。如果没有指定或者设置为auto,子项目占据的大小为width height的值。

<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">222</div>
        <div class="item">333</div>
    </div>
</body>
<script>
   
</script>
<style>
    .box {
        width: 400px;
        height: 50px;
        display: flex;
        background-color: black;
    }
    .item{
        height: 50px;
    }
    .item:nth-child(1) {
        background-color: red;
    }
    .item:nth-child(2) {
        width: 70px;
        height: 30px;
        flex-basis: auto;
        background-color: gray;
    }
    .item:nth-child(3) {
        width: 50px;
        flex-basis: 100px ;
        background-color: yellow;
    }
</style>

在这里插入图片描述
item1 没有指定 flex-basis, 默认宽度为项目本身的width
item2 指定 flex-basis: auto; 同时指定width height 则占据的大小为width和height的大小,即 width: 70px; height: 30px;
item3 指定了flex-basis:100px 会覆盖width宽度。 所以子项目占据的宽度就是100px;

flex-grow

felx-grow瓜分剩余的空间

<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">222</div>
        <div class="item">333</div>
    </div>
</body>
<script>
   
</script>
<style>
    .box {
        width: 400px;
        height: 50px;
        display: flex;
        background-color: black;
    }
    .item{
        height: 50px;
    }
    .item:nth-child(1) {
        width: 50px;
        background-color: red;
    }
    .item:nth-child(2) {
        width: 70px;
        flex-basis: auto;
        flex-grow: 2;
        background-color: gray;
    }
    .item:nth-child(3) {
        width: 50px;
        flex-basis: 100px ;
        flex-grow: 1;
        background-color: yellow;
    }
</style>

在这里插入图片描述

项目没瓜分前width放大的份额瓜分的width总计width
item150px0(400-50-70-100)/3 * 050
item270px2(400-50-70-100)/3 * 2=120px70+120
item3100px1(400-50-70-100)/3 * 1=60px100+60

容器的宽度为400px, 子项1的占用的基础空间(flex-basis)为50px,子项2占用的基础空间是70px,子项3占用基础空间是100px,剩余空间为 400-50-70-100 = 180px。 其中子项1的flex-grow: 0(未设置默认为0), 子项2flex-grow: 2,子项3flex-grow: 1,剩余空间分成3份,子项2占2份(120px),子项3占1份(60px)。所以 子项1真实的占用空间为: 50+0 = 50px, 子项2真实的占用空间为: 70+120 = 190px, 子项3真实的占用空间为: 100+60 = 160px。

flex-shrink

用来“吸收”超出的空间

<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">222</div>
        <div class="item">333</div>
    </div>
</body>
<script>
   
</script>
<style>
    .box {
        width: 400px;
        height: 50px;
        display: flex;
        background-color: black;
    }
    .item{
        height: 50px;
    }
    .item:nth-child(1) {
        width: 250px;
        background-color: red;
    }
    .item:nth-child(2) {
        width: 150px;
        flex-basis: auto;
        flex-shrink: 2;
        background-color: gray;
    }
    .item:nth-child(3) {
        width: 50px;
        flex-basis: 100px ;
        flex-shrink: 2;
        background-color: yellow;
    }
</style>

在这里插入图片描述
容器宽度400px, 子项目1占用的基准空间(width)为250px, 子项目2占用基准空间(width)为150px, 子项目3占用基准空间(flex-basis)为100px, 总基准空间250+150+100=500px > 400px, 多出的100px需要子项目根据flex-shrink进行吸收。
子项目1的flex-shrink=1(未设置默认1); 子项目2 flex-shrink=2; 子项目3 flex-shrink=2
因此子项目1需要需要吸收的空间为(2501)/(2501 + 1502 + 1002)100=33.33px, 子项目1真实空间250-33.33=216.67
子项目2需要吸收空间: (150
2)/(2501 + 1502 + 1002)100=40px,子项目2真实空间 150-40=110px
子项目3需要吸收空间(100
2)/(250
1 + 1502 + 1002)*100=26.67, 真实的空间为100-26.67=73.33px

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

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

相关文章

咪咕MGV2000_JL-S905L3-B-当贝纯净桌面线刷固件包

咪咕MGV2000_JL-S905L3-B-当贝纯净桌面线刷固件包-内有教程及短接点 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&a…

中兴B860AV2.1-T(M)-非高安版-当贝纯净桌面线刷固件包

中兴B860AV2.1-T(M)-非高安版-当贝纯净桌面线刷固件包-内有教程及短接点 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软…

【花雕学AI】32:WeTab——使用 ChatGPT 聊天的新标签页,免费又好用

引言&#xff1a; 你是否厌倦了每次打开浏览器都看到同样的新标签页&#xff1f;你是否想要让你的新标签页更有个性&#xff0c;更有趣&#xff0c;更有用&#xff1f;如果是的话&#xff0c;那么你一定要试试 WeTab&#xff01; WeTab 是一款免费的浏览器扩展&#xff0c;它…

DiscuzX3.5中,截屏图片的粘贴上传

目录 1 前言 2 网页端实现代码 3 服务器端php代码 4 测试一下 5 注意 1 前言 discuzX系列版本&#xff0c;无论是论坛还是门户&#xff0c;图片上传只能使用选择本地文件并上传的方式&#xff0c;与csdn直接用截屏后&#xff0c;ctrlv粘贴上传图片的方式相比&#xff0c;…

自动核对名单详细教程〖Python版〗

前言 大家好&#xff0c;今天我们来给大家分享一个很实用的东西。最近&#xff0c;有粉丝私信我&#xff0c;能不能做一个大学习自动核对名单的程序&#xff0c;我这个粉丝呢&#xff0c;她作为班级团支书&#xff0c;每次核对大学习的名单感到特别的头疼。那我接下来就来写一个…

国产操作系统---麒麟安装FastDFS

常用命令&#xff1a; fdfs_trackerd /etc/fdfs/tracker.conf start 启动 fdfs_storaged /etc/fdfs/storage.conf start 一、环境准备 环境&#xff1a;麒麟 4.19.90-24.4.v2101.ky10.x86_64 软件包 1. https://github.com/happyfish100/fastdfs/tagsfastDFS 1. …

论文阅读之Parameter-Efficient Transfer Learning for NLP(2019)

文章目录 AbstractIntroductionAdapter tuning for NLPExperiments总结参考 论文名称翻译过来就是“NLP的参数有效迁移学习”&#xff0c;其实就是是目前火热prompt learning&#xff08;提示学习&#xff09;出现的铺垫之一了。 NLP第三范式就是预训练模型微调下游任务&#x…

颠覆式变革来了?谷歌将改变搜索引擎展示方式,加入AI对话与短视频

来源 |华尔街见闻 作者 |周晓雯 谷歌搜索结果的展示页面&#xff0c;可能很快就会出现巨大变化。 据报道&#xff0c;谷歌正在改变其呈现搜索结果的方式&#xff0c;将人工智能对话以及更多的短视频和社交媒体帖子纳入其中&#xff0c;这与数十年来促使其成为搜索引擎“霸主”的…

UP主发车啦!撩人仙侠文系列,谁来管管这个反派啊!

本人书龄4年&#xff0c;平时很爱看小说&#xff0c;阅遍无数经典修仙文&#xff0c;熬夜党的最爱啊&#xff01;&#xff01;&#xff01;&#xff01;我心中的仙侠top&#xff0c;都是我的心头爱。 一般我都会跟朋友说这六本五星级仙侠好文&#xff0c;如果她们不看&#xf…

利用Appuploader上架IPA步骤

我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;https://cloud.tencent.com/developer/support-plan?invite_code1vtq5fxoqxjpg Appuploader可以辅助在Windows、linux或mac系统直接申请iOS证书p12&#xff0c;及上传ipa到App Store。方便在没有苹…

Shell脚本练习

求100以内正奇数和 注意点&#xff1a; $[]和$(())&#xff1a;是进行数学运算的。支持 - * / %&#xff1a;分别为 “加、减、乘、除、取模”。但是注意&#xff0c;bash只能作整数运算&#xff0c;对于浮点数是当作字符串处理的。{a..b}&#xff1a;表示范围。大于等于a&am…

python3+requests接口自动化测试实例详细操作

前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&#xff0c;使用的…

什么是ERP?电商ERP和传统ERP到底有什么不同?

随着电子商务行业的不断发展&#xff0c;传统的ERP系统已经不再适应电商的业务需求&#xff0c;因为这些系统主要是设计用于传统制造和物流公司。 电商企业面临的业务需求与传统制造和物流公司截然不同&#xff0c;因此需要更加灵活和适应性强的解决方案来支持其日常运营。 对…

PointNetGPD代码复现

0、安装分析 Ubuntu版本pcl版本vtk版本18.041.918.2.0 1、pcl1.9安装 1.1 安装依赖 sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-de…

托福高频真词List04 // 9:40~10:30 |阅读真题 // 11:00~11:50

目录 ​​​​​​​生词 熟词 阅读真题​​​​​​​ inclement adj.天气恶劣的&#xff1b;气候严酷的&#xff1b;狂风暴雨的&#xff1b;潮湿的&#xff1b;寒冷的 ​​​​​​​生词 propertycharacteristicfeaturen 特征substantiallysignificantlylargely…

一文读懂Web Component

前言 由于最近作者在学习微前端&#xff0c;web component也是其中一大特性&#xff0c;部分微前端框架使用到&#xff0c;也是深入学习了一下相关的知识&#xff0c;分享出来。 Web Component是什么&#xff1f; Web Component 实际上一系列技术的组合&#xff0c;主要包含…

【Java】Enum 枚举

java 中的枚举类型本质是默认继承于 java.lang.Enum 的类 常用方法 方法签名描述values()以数组形式返回枚举类型的所有成员ordinal()获取枚举成员的索引位置&#xff08;编号、序号&#xff09;valueOf()将普通字符串转换为枚举实例compareTo()比较两个枚举成员在定义是的顺…

名称空间(namespaces)与作用域

引入 在python解释器中运行一行代码import this就可以看到“传说”中的python之禅&#xff0c;它体现了使用python进行开发的规范&#xff0c;而最后一句 - Namespaces are one honking great idea -- lets do more of those!就是本文的主角。 名称空间(Namespaces) 名称空间…

PointNet:利用深度学习对点云进行3D分类和语义分割

PointNet&#xff1a;利用深度学习对点云进行3D分类和语义分割 参考自&#xff0c;PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码仓库地址为&#xff1a;https://github.com/charlesq34/pointnet/ 介绍 这次介绍的是一个比较基础的工作…

部署博客系统(部署博客系统到云服务器)

目录 1、建库建表 2、微调本地代码 3、打包&#xff08;使用Maven打成war包&#xff09; 4、拷贝到Tomcat的webapps 5、启动Tomcat服务器&#xff08;只有启动成功了才能进行访问&#xff09; 6、访问博客系统 1、建库建表 云服务器访问的是云服务器上的数据库,不是…