详解flex:1什么意思


Posted in HTML / CSS onJuly 23, 2022

简单的来说一下在别人问你这个问题的时候怎么来回答它

前端新人,如有错误求大佬指出~求教?

情景复现

大佬提问:“你知道flex: 1;的更深层次的内容吗?”

详解flex:1什么意思

我的回答:

  • flex:1实际代表的是三个属性的简写
  • flex-grow是用来增大盒子的,比如,当父盒子的宽度大于子盒子的宽度,父盒子的剩余空间可以利用flex-grow来设置子盒子增大的占比
  • flex-shrink用来设置子盒子超过父盒子的宽度后,超出部分进行缩小的取值比例
  • flex-basis是用来设置盒子的基准宽度,并且basis和width同时存在basis会把width干掉

所以flex:1;的逻辑就是用flex-basis把width干掉,然后再用flex-grow和flex-shrink增大的增大缩小的缩小,达成最终的效果。

flex-grow:1

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 500px;
      height: 100px;
      background-color: hotpink;
      display: flex;
    }
 
    .box div {
      width: 100px;
    }
 
    .box div:nth-child(1) {
      flex-grow: 1;
    }
 
    .box div:nth-child(2) {
      flex-grow: 3;
    }
    .box div:nth-child(3) {
      flex-grow: 1;
    }
 
 
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>
</html>

父盒子剩余空间的200

  • 第一个盒子扩大1/5,100+40 = 140
  • 第二个盒子扩大3/5,100+120=220
  • 第三个盒子扩大1/5,100+40= 140

flex-shrink:1

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 500px;
      height: 100px;
      background-color: hotpink;
      display: flex;
    }
 
    .box div {
      width: 200px;
    }
 
    .box div:nth-child(1) {
      flex-shrink: 1;
    }
 
    .box div:nth-child(2) {
      flex-shrink: 2;
    }
 
    .box div:nth-child(3) {
      flex-shrink: 1;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>
</html>

父盒子的宽度为500,子盒子的宽度为600,超出100,超出的100,如何进行比例缩放

第一个盒子:1/4 * 100 = 25 最终第一个盒子200-25=175
第二个盒子:2/4 * 100 = 50 最终第二个盒子200-50 = 150
第三个盒子:1/4 * 100 = 25 最终第一个盒子200-25=175

flex-basis:0%

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 500px;
      height: 100px;
      background-color: hotpink;
      display: flex;
    }
 
    .box div {
      width: 100px;
    }
 
    .box div:nth-child(1) {
      flex-basis: 50px;
    }
 
    .box div:nth-child(2) {
      flex-basis: 100px;
    }
 
    .box div:nth-child(3) {
      flex-basis: 50px;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>
</html>

这样width的宽度就已经被flex-basis:0%干掉了

到此这篇关于详解flex:1什么意思的文章就介绍到这了,更多相关flex:1详解内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
css3实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 HTML / CSS
前端隐藏出边界内容的实现方法
Apr 14 HTML / CSS
CSS3实现超酷的黑猫警长首页
Apr 26 HTML / CSS
css3 media 响应式布局的简单实例
Aug 03 HTML / CSS
HTML5之web workers_动力节点Java学院整理
Jul 17 HTML / CSS
使用HTML5做个画图板的方法介绍
May 03 HTML / CSS
HTML5验证以及日期显示的实现详解
Jul 05 HTML / CSS
24个canvas基础知识小结
Dec 17 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
Mar 25 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
Jun 27 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
Apr 19 HTML / CSS
CSS的calc函数用法小结
Jun 25 HTML / CSS
CSS子盒子水平和垂直居中的五种方法
Jul 23 #HTML / CSS
如何用H5实现好玩的2048小游戏
Jul 23 #HTML / CSS
css让页脚保持在底部位置的四种方案
Jul 23 #HTML / CSS
浅谈为什么我的 z-index 又不生效了
Jul 15 #HTML / CSS
纯CSS实现一个简单步骤条的示例代码
Jul 15 #HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 15 #HTML / CSS
如何解决flex文本溢出问题小结
Jul 15 #HTML / CSS
You might like
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
vue v-for直接循环数字实例
2019/11/07 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
详解Python中time()方法的使用的教程
2015/05/22 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
python如何设置静态变量
2020/09/07 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
应届大学生的推荐信
2013/11/20 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
信访工作个人总结
2015/03/03 职场文书
个人培训总结
2015/03/05 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers