我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在flex布局中计算flex-grow与flex-shrink

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在flex布局中计算flex-grow与flex-shrink

本篇文章为大家展示了怎么在flex布局中计算flex-grow与flex-shrink,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

CSS 中的 Flex(弹性布局) 可以很灵活的控制网页的布局,其中决定 Flex 布局内项目宽度/高度的是三个属性:
flex-basis, flex-grow, flex-shrink.

flex-basis

  flex-basis 决定了项目占据主轴的空间,除非使用 box-sizing 进行设置,否则它将设置内容框的大小,因此当你指定一个flex项的大小时需要额外小心,因为它很肯能包含内边距与边框。

  你可以为其指定一个具体的CSS尺寸值,也可以指定其占据父元素的百分比,它的默认值为 auto(根据内容自动调整大小)

<!-- demo-1 -->  <div class="parent">    <div class="child1">100px</div>    <div class="child2">200px</div>  </div>  <div class="parent">    <div class="child1">10%</div>    <div class="child2">20%</div>  </div>  <div class="parent">    <div class="child1">30%</div>    <div class="child2">auto</div>  </div>  <style>    .parent {      width: 500px;      display: flex;      margin-bottom: 15px;      text-align: center;      background-color: #eeeeee;    }        .parent:nth-child(1) .child1 {      flex-basis: 100px;      background-color: #356969    }    .parent:nth-child(1) .child2 {      flex-basis: 200px;      background-color: #369925;    }        .parent:nth-child(2) .child1 {      flex-basis: 10%;      background-color: #356969    }    .parent:nth-child(2) .child2 {      flex-basis: 20%;      background-color: #369925;    }        .parent:nth-child(3) .child1 {      flex-basis: 30%;      background-color: #356969    }    .parent:nth-child(3) .child2 {      flex-basis: auto;      background-color: #369925;    }  </style>

怎么在flex布局中计算flex-grow与flex-shrink

flex-grow

  flex-grow 设置当 flex 容器存在剩余空间(flex容器的大小减去所有flex项的大小之和)时项目的放大比例,它的默认值为 0 (即使存在剩余空间也不放大)。如果所有项目的 flex-grow 属性值都是相同的,则它们将等分剩余空间,否则,将根据不同的属性值所定义的比率进行分配。

  例如,主轴长度为600px, 项目1占据50px, 项目2占据100px, 项目3占据150px, 则剩余空间为:600px - (50px + 100px + 150px) = 300px

  假如每个项目的 flex-grow 属性值都相同(例如都为1),则所有项目分配到相同的剩余空间:
  - 项目1: 300px * (1 / (1 + 1 + 1)) = 100px;
  - 项目2: 300px * (1 / (1 + 1 + 1)) = 100px;
  - 项目3: 300px * (1 / (1 + 1 + 1)) = 100px;

  <!-- demo-2 -->  <div class="parent">    <div class="child1">50px + 100px</div>    <div class="child2">100px + 100px</div>    <div class="child3">150px + 100px</div>  </div>  <style>    .parent {      width: 600px;      display: flex;      text-align: center;      color: #eee;    }    .child1 {      flex-basis: 50px;      flex-grow: 1;      background-color: #0066CC;    }     .child2 {      flex-basis: 100px;      flex-grow: 1;      background-color: #009900;    }    .child3 {      flex-basis: 150px;      flex-grow: 1;      background-color: #CC3300;    }  </style>

怎么在flex布局中计算flex-grow与flex-shrink

  假设每个项目的 flex-grow 属性的值并不都是相同的,例如项目1为 1, 项目2为 2, 项目3为 3, 则它们分配到的剩余空间分别为:
  - 项目1: 300px * (1 / (1 + 2 + 3)) = 50px;
  - 项目2: 300px * (2 / (1 + 2 + 3)) = 100px;
  - 项目3: 300px * (3 / (1 + 2 + 3)) = 150px;

  <!-- demo-3 -->  <div class="parent">    <div class="child1">50px + 50px</div>    <div class="child2">100px + 100px</div>    <div class="child3">150px + 150px</div>  </div>  <style>    .parent {      width: 600px;      display: flex;      text-align: center;      color: #eee;    }    .child1 {      flex-basis: 50px;      flex-grow: 1;      background-color: #0066CC;    }     .child2 {      flex-basis: 100px;      flex-grow: 2;      background-color: #009900;    }    .child3 {      flex-basis: 150px;      flex-grow: 3;      background-color: #CC3300;    }  </style>

怎么在flex布局中计算flex-grow与flex-shrink

  要是属性值为小数怎么办呢?这里分两种情况:
  1. 所有flex项的 flex-gorw 属性值之和大于1,仍然按照上述方式进行计算;
  2. 所有flex项的 flex-gorw 属性值之和小于1,基值按照1来进行计算,例如项目1为 0.2, 项目2为 0.3, 项目3为 0.4, 则它们分配到的剩余空间分别为:
  - 项目1: 300px * (0.2 / 1) = 60px;
  - 项目2: 300px * (0.3 / 1) = 90px;
  - 项目3: 300px * (0.4 / 1) = 120px;

 <!-- demo-4 -->  <div class="parent">    <div class="child1">50px + 60px</div>    <div class="child2">100px + 90px</div>    <div class="child3">150px + 120px</div>  </div>  <style>    .parent {      width: 600px;      display: flex;      text-align: center;      color: #eee;    }    .child1 {      flex-basis: 50px;      flex-grow: 0.2;      background-color: #0066CC;    }     .child2 {      flex-basis: 100px;      flex-grow: 0.3;      background-color: #009900;    }    .child3 {      flex-basis: 150px;      flex-grow: 0.4;      background-color: #CC3300;    }

怎么在flex布局中计算flex-grow与flex-shrink

flex-shrink

  flex-shrink 设置当 flex 容器空间不足时项目的放大比例,它的默认值为 1 (空间不足时该项目将缩小)。

  flex-shrink 的计算方式与 flex-grow 略有不同,有两个因素影响 flex 项该缩小多少,一个是 flex-shrink 的属性值,另一个是 flex 项本身的大小,它们按各自的权重进行缩小,举例来说:

  主轴长度为600px, 项目1占据100px, 项目2占据300px, 项目3占据500px, 每个项目的 flex-shrink 属性值分别为1,3,2, 则总权重为 100px 1 + 300px 3 + 500px *2 = 2000px, 每个项目的权重分别为为:
  - 项目1: (100px * 1) / 2000px = 0.05;
  - 项目2: (300px * 3) / 2000px = 0.45;
  - 项目3: (500px * 2) / 2000px = 0.50;
  溢出的空间长度为:100px + 300px + 500px - 600px = 300px;
  那么每个项目分别缩小:
  - 项目1: 300px * 0.05 = 15px;
  - 项目2: 300px * 0.45 = 135px;
  - 项目3: 300px * 0.50 = 150px;

 <!-- demo-5 -->  <div class="parent">    <div class="child1">100px - 15px</div>    <div class="child2">300px - 135px</div>    <div class="child3">500px - 150px</div>  </div>  <style>    .parent {      width: 600px;      display: flex;      text-align: center;      color: #eee;    }    .child1 {      flex-basis: 100px;      flex-shrink: 1;      background-color: #0066CC;    }     .child2 {      flex-basis: 300px;      flex-shrink: 3;      background-color: #009900;    }    .child3 {      flex-basis: 500px;      flex-shrink: 2;      background-color: #CC3300;    }  </style>

怎么在flex布局中计算flex-grow与flex-shrink

  同样的,当 flex-shrink 的值为小数时,也分两种情况:
  1. 所有flex项的 flex-shrink 属性值之和大于1,仍然按照上述方式进行计算;
  2. 所有flex项的 flex-shrink 属性值之和小于1,只收缩溢出空间的一部分,例如项目1为 0.1, 项目2为 0.3, 项目3为 0.2, 则总的收缩空间为:
  300px * (0.1 + 0.3 + 0.2) = 180px  
  每个项的权重计算方式是不变的,每个项目分别缩小:
  - 项目1: 180px * 0.05 = 9px;
  - 项目2: 180px * 0.45 = 81px;
  - 项目3: 180px * 0.50 = 90px;

 <!-- demo-6 -->  <div class="parent">    <div class="child1">100px - 9px</div>    <div class="child2">300px - 135px</div>    <div class="child3">500px - 90px</div>  </div>    <style>    .parent {      width: 600px;      display: flex;      text-align: center;      color: #eee;    }    .child1 {      flex-basis: 100px;      flex-shrink: 0.1;      background-color: #0066CC;    }     .child2 {      flex-basis: 300px;      flex-shrink: 0.3;      background-color: #009900;    }    .child3 {      flex-basis: 500px;      flex-shrink: 0.2;      background-color: #CC3300;    }  </style>

怎么在flex布局中计算flex-grow与flex-shrink

  由于只收缩了溢出空间的一部分,div 内的元素总宽度实际上是超出 div 的宽度的。

  以上就是关于使用flex布局中 flex-grow 与 flex-shrink 计算方式的简单介绍。

上述内容就是怎么在flex布局中计算flex-grow与flex-shrink,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在flex布局中计算flex-grow与flex-shrink

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在flex布局中计算flex-grow与flex-shrink

本篇文章为大家展示了怎么在flex布局中计算flex-grow与flex-shrink,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。CSS 中的 Flex(弹性布局) 可以很灵活的控制网页的布局,其
2023-06-08

Flex布局属性flex-grow、flex-shrink和flex-basis怎么使用

这篇文章主要介绍“Flex布局属性flex-grow、flex-shrink和flex-basis怎么使用”,在日常操作中,相信很多人在Flex布局属性flex-grow、flex-shrink和flex-basis怎么使用问题上存在疑惑,
2023-07-04

flex-shrink属性怎么在CSS3中使用

今天就跟大家聊聊有关flex-shrink属性怎么在CSS3中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在CSS3 Flexbox中flex-shrink属性定义为: Thi
2023-06-09

Flex布局与缩放比例计算案例分析

本篇文章为大家展示了Flex布局与缩放比例计算案例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Flex 布局简介Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状
2023-06-08

CSS3中的Flex布局怎么使用

这篇文章主要介绍“CSS3中的Flex布局怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS3中的Flex布局怎么使用”文章能帮助大家解决问题。简介什么是Flex布局Flex是Flexib
2023-07-04

css3中dispaly的Grid布局与Flex布局有什么不同

这篇“css3中dispaly的Grid布局与Flex布局有什么不同”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“css3中dispaly的Grid布局与Flex布局有什么不同”,给大家总结了以下内容,具有一定借鉴价值,内容
2023-06-08

怎么在flex布局中实现左侧文字溢出省略右侧文字自适应

这篇文章给大家介绍怎么在flex布局中实现左侧文字溢出省略右侧文字自适应,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.右侧文字是多少就是多宽,左侧默认占据剩余的所有空间。2.右侧文字是多少就是多宽,和1一样。左侧文
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录