flex:1是干嘛的

直接上图:

在这里插入图片描述
flex:1实际代表的是三个属性的简写,如上图所示。

  1. 其中flex-grow是用来增大盒子的,比如,当子盒子的宽度小于父盒子的宽度,父盒子的剩余空间可以 利用flex-grow来设置子盒子增大的占比;

  2. flex-shrink用来设置子盒子超过父盒子的宽度后,超出部分进行缩小的取值比例

  3. 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>

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%干掉了

相关推荐

  1. layui.use

    2024-04-04 13:44:03       28 阅读
  2. tomcat到底

    2024-04-04 13:44:03       14 阅读
  3. spec文件

    2024-04-04 13:44:03       5 阅读
  4. 【react hook】ahookuseThrottleEffect

    2024-04-04 13:44:03       41 阅读
  5. 【npm】npm中classnames包

    2024-04-04 13:44:03       38 阅读
  6. 【MySQL】mysqladmin、mysqlshow、mysqlcheck都

    2024-04-04 13:44:03       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 13:44:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 13:44:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 13:44:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 13:44:03       20 阅读

热门阅读

  1. Ubuntu pycharm配置Conda环境

    2024-04-04 13:44:03       14 阅读
  2. mongodb 基础查询使用

    2024-04-04 13:44:03       14 阅读
  3. String

    2024-04-04 13:44:03       14 阅读
  4. 再说机器学习

    2024-04-04 13:44:03       14 阅读
  5. 神经网络设计:(block)块视角和(layer)层视角

    2024-04-04 13:44:03       15 阅读
  6. Spring AI使用向量数据库实现检索AI对话

    2024-04-04 13:44:03       16 阅读
  7. ChatGPT智能辅助:让学术论文写作更从容自如

    2024-04-04 13:44:03       18 阅读
  8. volatile 变量和 atomic 变量有什么不同

    2024-04-04 13:44:03       17 阅读
  9. 深度学习中的注意力模块的添加

    2024-04-04 13:44:03       11 阅读