详解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动画过渡实现鼠标跟随导航效果
Feb 08 HTML / CSS
CSS3 中的@keyframes介绍
Sep 02 HTML / CSS
html5嵌入内容_动力节点Java学院整理
Jul 07 HTML / CSS
html5触摸事件判断滑动方向的实现
Jun 05 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
Jan 30 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
Apr 10 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
May 07 HTML / CSS
Html5 audio标签样式的修改
Jan 28 HTML / CSS
HTML5拖拽的简单实例
May 30 HTML / CSS
HTML5 新标签全部总汇(推荐)
Jun 13 HTML / CSS
Html5调用企业微信的实现
Apr 16 HTML / CSS
css清除浮动clearfix:after的用法详解(附完整代码)
May 21 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
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python爬虫基本知识
2018/03/05 Python
Python中@property的理解和使用示例
2019/06/11 Python
在keras中实现查看其训练loss值
2020/06/16 Python
Python如何定义有默认参数的函数
2020/08/10 Python
python3.5的包存放的具体路径
2020/08/16 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
新闻记者实习自我鉴定
2013/09/19 职场文书
年检委托书
2014/08/30 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
电力工程合作意向书
2015/05/11 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
Python必备技巧之字符数据操作详解
2022/03/23 Python
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android