flex:1 是什么?

首先 flex: 1; 等同于 flex: 1 1 auto;

flex: 1 实际上是三个属性的缩写:flex-grow: 1; flex-shrink: 1 flex-basis: auto;

flex-grow的作用

 flex-grow 的作用是表示在当前元素占多少份的意思。

演示一段代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.content {width: 500px;display: flex; }.box-1 {background: aqua;flex-grow: 1;}.box-2 {background: pink;flex-grow: 1;}</style>
</head>
<body><div class="content"><div class="box-1">box-1</div><div class="box-2">box-2</div></div>
</body>
</html>

示例图:

这样表示2个子元素各占1份,填充满整个flex的内容

flex-basis的作用

代码演示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.content {width: 500px;display: flex; }.box-1 {background: aqua;flex-basis: 10%;}.box-2 {background: pink;flex-basis: 100px;}</style>
</head>
<body><div class="content"><div class="box-1">box-1</div><div class="box-2">box-2</div></div>
</body>
</html>

示例图:

这边没有设置flex-grow所以默认是flex-grow: 0;

flex-basis表示 flex中的剩余空间的大小。

那么box-1就是占总总宽度(500px)的10%,box-2则占总宽度(500px)的100px;

flex-grow 与 flex-basis 其实类似,区别在于,flex-grow 会填充满整个flex内容,而flex-basis不会通常满整个内容。

flex-shrink的作用

代码演示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.content {width: 500px;display: flex; }.box-1 {background: aqua;width: 400px;flex-shrink: 1;}.box-2 {background: pink;width: 200px;flex-shrink: 2;}</style>
</head>
<body><div class="content"><div class="box-1">box-1</div><div class="box-2">box-2</div></div>
</body>
</html>

这边设置flex下2个子元素的宽度分别是 400px 和 300px,可以明显的看出已经超出父元素设置的500px。

那么这是flex-shrink就会起到作用,它会根据flex-shrink设置的值进行收缩。

如果flex-shrink设置为0表示当前元素不会进行收缩,flex-shrink的默认值为1;

 flex-shrink的收缩公示(以这个为例):

子元素超出的宽度 * flex-shrink的值 * 子元素宽度 / 总值;

总值的获取(以当前代码为例):1(box-1的flex-shrink值) * 400(box-1的宽度) + 2(box-2的flex-shrink值) * 300(box-2的宽度) = 1000;

以当前代码为例计算:

子元素超出的值:500 - (400 + 300) = 200;

总值:1 * 400 + 2 * 300 = 1000;

.box-1收缩的宽度:200 * 1 * 400 / 1000 = 80;

.box-2收缩的宽度:200 * 2 * 300 / 1000 = 120;

实际看效果图

flex下的子元素确实是按照计算出来的宽度进行收缩了。

那么回归正题,flex:1 等于 flex:1 1 0 就很好理解了,默认情况下 flex 等于 flex 0 1 auto。

实际动手敲一遍代码看看效果会发现其实很好理解

flex:1是什么?相关推荐

  1. CSS flex 用法

    flex 用法: flex 可以在浏览器里点击就有~ 设置了 display: flex 的父元素被称之为 flex 容器(flex container),它的子元素都会以 flex 布局. flex ...

  2. flex java socket通信

    引用:http://developer.51cto.com/art/201003/189791.htm Java socket通信如何进行相关问题的解答呢?还是需要我们不断的学习,在学习的过程中会遇到 ...

  3. flex和bison实例分析

    最近在学习编译原理,利用flex和bison编写一个基于文本识别的简单计算器程序,参考<flex于bison>中内容,对程序进行一些简单的修改,加入Makefile.该计算器程序主要实现识 ...

  4. Adding a QR Code Reader in Flex on Android

    <?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns ...

  5. 改善FLEX/FLASH性能的小技巧(转)

    使用下面的几个改善性能的技巧,如果你使用Flex Builder,那么可以使用调试窗口查看你的程序中关键的几步创建对象和内存回收的情况. 有时细小的调整会造成很大的不同.下面是一小部分能够改善你的程序 ...

  6. Flex实现页面多态--state对象

    在Flex 程序中,引入了状态设计的概念.在一个程序中,按照功能的需求,将界面切分成相对独立的部分.运行过程中,随着用户交互,界面在各个部分之间切换.比如在购物车程序中,登录界面.选购商品界面.购物车 ...

  7. 【转】Flex Application 初始化顺序

    转自:http://www.jexchen.com 大家都知道,我们在编写Flex应用程序时,通常是以<mx:Application>标签作为开头,实际上,Flex应用程序在启动运行的时候 ...

  8. Flex报错Error #2048: 安全沙箱冲突

    Flex+JPA架构,JPA程序迁移,从A服务器到B.其他一切没变,唯一变的就是IP. 前端Flex也就是swf报错Error #2048: 安全沙箱冲突:http://xxx.swf 不能从 xxx ...

  9. java flex 图片上传_flex上传图片到java服务器

    今天弄flex上传图片到java,现在弄成功,中间也经常一点小波折,现记录一下.重点在java侧的实现. flex侧:文件上载到在url参数中传递的URL.该URL必须是配置为接受上载的服务器脚本.F ...

  10. Flex 布局详解 - 转自阮一峰老师

    Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何的盒子都可以使用它. 下面我们来看一下使用 Flex 布局的容器的属性 fle ...

最新文章

  1. java map collection_java 集合----Map、Collection
  2. c printf 缓冲区分析
  3. 关于双WiFi板卡做路由功能的记录
  4. java编程一般类抽象类的定义,Java编程基础抽象类
  5. 1285B. Just Eat It
  6. 计算机的好处英语,电脑的好处英语演讲稿
  7. tensorflow学习笔记1
  8. Android中ICS4.0Launcher中Fold的功能详解【androidICS4.0--Launcher系列三】
  9. Python学习记录--关于列表和字典的比较
  10. python个人所得税怎么写_Python实现的个人所得税计算器示例
  11. sublime快捷键生成html5基本模板
  12. Rename_suffix
  13. CF1528B Kavi on Pairing Duty(dp)
  14. [功不唐捐-2013]_强哥的无敌异或
  15. 输入法不见了,咋办?输入法不能开机启动咋办?
  16. 【解决方案】VR视频行业急速发展,如何搭建一套16K高清的公网视频传输系统?
  17. 小程序转发二维码携带参数不生效的问题
  18. HMS Core Discovery第15期直播预告|构筑立体世界,共造沉浸式营销
  19. 麻省理工计算机科学录取条件,美国麻省理工学院录取条件
  20. js遍历json的key和value

热门文章

  1. kubernetes 之QoS服务质量管理
  2. dilated(dilated cardiomyopathy)
  3. 云仓代发货到底是什么?
  4. Python机器学习基础篇三《无监督学习与预处理》
  5. c++primer plus 6 读书笔记 第四章 复合类型
  6. 【转】常用的隧道技术
  7. 盘点最常用的几款linux服务器管理面板
  8. 【下载网页上的视频】IDM显示无法将下载行为传输到IDM
  9. myeclipse破解方法
  10. 调用百度AI接口实现图片文字识别