广告位联系
返回顶部
分享到

flex:1的详细介绍

css 来源:互联网 作者:酷站 发布时间:2022-08-09 13:06:38 人浏览
摘要

简单的来说一下在别人问你这个问题的时候怎么来回答它 前端新人,如有错误求大佬指出~求教???? 情景复现 大佬提问:你知道flex: 1;的更深层次的内容吗? 我的回答: 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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<!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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<!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%

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 :
    Tag :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计