flex-grow

首先介绍flex-grow属性flex-grow会在容器太大时(图片A、B的宽度和 < 父容器宽度)对元素作出调整。

如果图片A的flex-grow属性的值为 1,图片B的flex-grow为 2,那么 2 的会比 1 的扩大两倍:

也许“扩大两倍”这个概念不便于理解,我们可以换一种说法。

首先要理解一个词“剩余空间”:具备flex环境的父容器(display:flex;)默认有一条从左往右

的主轴,而剩余空间就是父容器在主轴方向上还有多少可用空间。例如现在有一个父容器container宽度为500px,

而图A+图B为300px,则剩余空间为200px。此时,图片A的flex-grow属性的值为 1,图片B的flex-grow为 2,

则剩余空间200px将被分为1+2=3份,其中一份分给图片A,两份分给图片B,也就是上面所说的图片A比图片B多扩大两倍。

flex-shrink

默认情况下,flex是不换行的,即使内容的宽度超过了父容器的宽度也不会,除非设置flex-wrap来换行。

flex-shrink属性。flex-grow会在容器太大时对元素作出调整。相应地,使用flex-shrink之后,

如果 flex 容器太小,该项目会自动缩小。当容器的宽度小于里面所有项目的宽度,项目就会自动压缩。

flex-shrink属性接受 number 类型的值。数值越大,与其他项目相比会被压缩得更厉害。例如,

如果图片A的flex-shrink为 1 ,图片B的flex-shrink为 2,那么 2 的那个与 1 相比会受到 2 倍压缩:

而实际的压缩率是多少呢?在实际内容宽度大于父容器的情况下,

剩余空间就自然地变为了负数,也就暂时不起作用。这里假设图片A 200px 图片B 200px,父容器300px。

设图片A B的压缩率是X1 X2,则有方程:

X2 = 2 * X1

300 = 200*X1 + 200*X2,求得压缩率。

(如果你不想让内容被压缩,则可设置flex-shrink为0)

flex-basis

flex-basis属性指定了项目在 CSS 进行flex-shrinkflex-grow调整前的初始大小。功能上等价于width,但优先级比width高。

flex-basis属性的单位与其他 size 属性一致(pxem%等)。如果值为auto,项目的大小依赖于自身内容。

在这里,图片A的flex-basis为10em,图片B的flex-basis为20em:

flex 短方法

上面几个 flex 属性有一个简写方式。flex-growflex-shrinkflex-basis属性可以在flex中一同设置。

例如,图片A flex: 2 2 150px;会把项目属性设为flex-grow: 2;flex-shrink: 2;以及flex-basis: 150px;

   图片B flex: 1 1 150px;会把项目属性设为flex-grow: 1;flex-shrink: 1;以及flex-basis: 150px;

(flex 属性的默认设置是flex: 0 1 auto;)

当容器宽度小于150+150=300px时,会让图片A的缩小倍率为图片B的两倍(缩小得更快):

当容器宽度大于300px时,会让图片A的填充倍率为图片B的两倍(扩增得更快):


部分内容参考自:https://learn.freecodecamp.one/

CSS 弹性盒子 flex的三个属性:grow、shrink、basis的更多相关文章

  1. 使用css弹性盒子模型

    提示: 当期内容不充实, 修改后再来看吧 以下称:弹性子元素: 子元素, 弹性容器: 容器 弹性盒子的属性 1. css弹性盒子模型规定了弹性元素如何在弹性容器内展示 2. 弹性元素默认显示在弹性容器 ...

  2. CSS3总结五:弹性盒子(flex)、弹性盒子布局

    弹性盒子容器的属性与应用 display:flex/inline-flex flex-direction flex-wrap justify-content align-items align-con ...

  3. 认识弹性盒子flex

    认识弹性盒子flex 来源:https://blog.xybin.top/2022/flex 1.定义弹性布局(父级上定义)display:flex; 如果说内核为webkit 的必须前面加上 -we ...

  4. CSS3 弹性盒子(Flex Box)

    1 CSS3 弹性盒子(Flex Box) 1 http://caniuse.com/#search=flex%20box https://www.w3.org/TR/css-flexbox-1/ C ...

  5. CSS 弹性盒子模型

    CSS 弹性盒子模型 https://www.w3.org/TR/2016/CR-css-flexbox-1-20160526/ CSS Flexible Box Layout Module Leve ...

  6. CSS:CSS弹性盒子布局 Flexible Box

    一.简介 flexbox:全称Flexible Box, 弹性盒子布局.可以简单实现各种伸缩性的设计,它是由伸缩容器和伸缩项目组成.任何一个元素都可以指定为flexbox布局.这种新的布局方案在200 ...

  7. css弹性盒子学习

    css3弹性盒子是一种布局方式,在适应不同的屏幕大小的时候,能够确保元素拥有更恰当的排布行为.它只是视觉呈现上的,即显示顺序适应显示空间,与源代码无关,源代码顺序不受影响. 定义一个弹性盒子: 在cs ...

  8. css弹性盒子新旧兼容

    前言:本篇随笔是对弹性盒子有了解的人来写的这篇文章,具体属性产生的效果这里不做说明,基础的东西去查文档.这里只是总结. 时至今日,css3的flex弹性盒子在移动端基本上都是支持的,但不排除有些些低版 ...

  9. CSS弹性盒子的基本用法

    .container { width: 302px; height: 302px; border: 1px solid; display: flex } .item { width: 100px; h ...

随机推荐

  1. 为什么Fun函数能够执行

    #include<stdio.h> #include<windows.h> void Fun() { printf("Kali-Team\n"); } in ...

  2. 【LOJ2542】「PKUWC2018」随机游走

    题意 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一 ...

  3. LVS负载均衡基本原理

    负载均衡基本原理与lvs 基本介绍 1.1 负载均衡的由来 在业务初期,我们一般会先使用单台服务器对外提供服务.随着业务流量越来越大,单台服务器无论如何优化,无论采用多好的硬件,总会有性能天花板,当单 ...

  4. 认识json,详解JsonConfig

    说到json 初学者很迷茫,不知json怎么为何物,以及怎么用.我简单说下我的了解 既然用了json 我们就要知其然也知其所以然.下面有几个疑问 1.为什么要用json?也就是json 的优势 2.我 ...

  5. CSS样式表——样式2

    样式 5)边界边框 margin:0px;                                            //外边距为0 margin:10px 0px 0px 10px;   ...

  6. python基础数据类型--集合(set)

    python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...

  7. CAN编写完分帧发送, 分帧接收,J1939位域型结构体心得

    关于由多个不同的C文件构成的工程,我采用以下方法 以为400Hz数字电源程序为例 假设工程由以下文件组成 DC_Comm.c 主要完成串口通讯部分 DC_Config.c 主要完成时钟,外设 中断初始 ...

  8. POJ 3692:Kindergarten 求补图的最大点独立集 头一次接触这样的做法

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5884   Accepted: 2877 Desc ...

  9. OSDA - 一个以MIT协议开源的串口调试助手

    市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...

  10. Python基础笔记:高级特性:切片、迭代、列表生成式、生成器、迭代器

    题记: 在python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好. 1行代码能实现的功能,绝不写5行代码. 请始终牢记:代码越少,开发效率越高. 切片 >>&g ...