flex-shrink和felx-grow

news/2024/7/7 20:57:02

本文就是简单的介绍下flex-shrink和felx-grow的作用和计算方式吧;关于这个介绍也是很多;

  1. flex-shrink

flex-shrink是flex布局中的一种方式,简单来说,就是当布局大小小于容器大小的时候,使用flex-shrink能够按照一定的比例进行压缩。比如有一个500px的容器,里面放了5个120px的子容器,如果不考虑任何布局,5个子容器已经超越了500的大小了。而当我们给父容器添加flex布局的时候,就会排列一行,此时就算超越了容器大小依旧完整的充满容器,这是因为flex-shrink的默认值为1,如果没有显示定义该属性,将会自动按照默认值1在所有因子相加之后计算比率来进行空间收缩。那么我们对个别子容器设置不同的flex-shrink会怎么样呢?如下:

<div id="content">
  <div class="box" style="background-color:red;">A</div>
  <div class="box" style="background-color:lightblue;">B</div>
  <div class="box" style="background-color:yellow;">C</div>
  <div class="box1" style="background-color:brown;">D</div>
  <div class="box1" style="background-color:lightgreen;">E</div>
</div>
<style>
#content {
  display: flex;
  width: 500px;
  border:2px solid red;
}

#content div {
  width: 120px;
  border: 3px solid rgba(0,0,0,.2);
}
.box { 
  flex-shrink: 1;
}

.box1 { 
  flex-shrink: 2; 
}

</style>

我们会发现DE明显变短,并且子容易排列完整填充父容器。那么他们分别缩短了多少呢?

我们看看菜鸟上面如何计算的:

说实话,我看到这里比较懵的,为什么要计算这么麻烦。。。。

我用我的方法吧。。。首先五个子容器不压缩得占用空间600,但是容器只有500,多了100,这多的100就得按照flex-shrink的大小进行平分(要恢复到500的大小,只能每个子容器减去这个大小),那么A容器就是:100/7*1=14.28=14,即A容器就得减去14PX的大小。同理,D,E就是得28px.

  1. felx-grow

felx-grow就和flex-shrink相反,对扩张的比例分配。默认值为0。

<div id="main">
  <div style="background-color:coral;"></div>
  <div style="background-color:lightblue;"></div>
  <div style="background-color:khaki;"></div>
  <div style="background-color:pink;"></div>
  <div style="background-color:lightgrey;"></div>
</div>
<style> 
#main {
  width: 350px;
  height: 100px;
  border: 1px solid #c3c3c3;
  display: flex;
}

#main div:nth-of-type(1) {flex-grow: 1;}
#main div:nth-of-type(2) {flex-grow: 3;}
#main div:nth-of-type(3) {flex-grow: 1;}
#main div:nth-of-type(4) {flex-grow: 1;}
#main div:nth-of-type(5) {flex-grow: 1;}

</style>

到了这里,我突然想起一个问题,这个flex-grow我不知道各位用的多不多,但是我一般都是用flex:1这种直接用flex进行分配大小的。那么弹性盒模型中flex-grow 和flex的区别是什么?

3.flex-basis 属性

用处:设置弹性盒元素的初始长度。有兴趣可以了解下,没啥特别的,不过对我个人来说挺冷门的,哈哈哈


http://lihuaxi.xjx100.cn/news/908267.html

相关文章

自己的电脑该怎么当web服务器

要将电脑用作 Web 服务器,需要执行以下步骤: 1.安装Web服务器软件 首先&#xff0c;您需要选择并安装一个 Web服务器软件。常见的 Web 服务器软件包括Apache,Nginx和 Microsoft llS。您可以从官方网站下载并安装这些软件。 2配置Web 服务器 安装 Web服务器后&#xff0c;您需…

(4)VScode之ssh基础配置

VScode和SSH基础配置问题集合 Author&#xff1a;onceday date&#xff1a;2022年8月31日 本文记录linux的ssh和vscode开发环境搭建之路。 参考文档&#xff1a; 离线安装vscode Once Day CSDN博客关于x86、x86_64/x64、amd64和arm64/aarch64 Bogon 简书arm64和aarch64之间…

1631_MIT 6.828 lab1 HW的部分尝试与总结

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 其实很多尝试我之前自己都做过了&#xff0c;这里就可以直接跳过或者简单提一下。 这个环境的搭建已经完成了&#xff0c;而且早就做了很多尝试了。之前的笔记中记…

嵌入式Qt 开发一个视频播放器

上篇文章&#xff1a;嵌入式 Qt开发一个音乐播放器&#xff0c;使用Qt制作了一个音乐播放器&#xff0c;并在OK3568开发板上进行了运行测试&#xff0c;实际测试效果还不错。 本篇继续来实现一个Qt视频播放器软件&#xff0c;可以实现视频列表的显示与选择播放等&#xff0c;先…

17个优秀WordPress LMS在线教育平台主题

为您的WordPress在线教育平台主题网站选择在线课程主题是您在建立在线教育业务时做出的最重要的决定之一。正确的主题不仅决定了您网站的外观和感觉&#xff0c;还决定了用户体验。这在构建在线课程平台时变得更加重要&#xff0c;因为您的访问者将是您的学生&#xff0c;他们会…

基于DSP+FPGA的机载雷达伺服控制系统的硬件设计与开发

机载雷达是以飞机为载体的各种雷达天线的总称&#xff0c;主要用于空中侦察、警戒、保 证航行准确与安全[1]。随着航空航天技术的飞速发展&#xff0c;以及微电子、计算机和高速集 成电路等新型技术在军事领域的广泛应用[2]&#xff0c;各国都研制出了许多新型战机和导弹,机 载…

UI自动化测试之设计框架

目的 相信做过测试的同学都听说过自动化测试&#xff0c;而UI自动化无论何时对测试来说都是比较吸引人的存在。 相较于接口自动化来说它可以最大程度的模拟真实用户的日常操作与特定业务场景的模拟&#xff0c;那么存在即合理&#xff0c;自动化UI测试自然也是广大测试同学职…

kubeadm集群部署

k8s PS&#xff1a;最少还是3台&#xff0c;此文档因资源不足&#xff0c;集群只有俩台。 1.基础配置修改 #修改主机名添加hosts映射 [rootlocalhost ~]# hostnamectl set-hostname k8s-master [rootlocalhost ~ ]# hostnamectl set-hostname k8s-node01 [rootk8s-master ~]# …