在flex弹性盒模型体系中,flex-grow和flex都有对子元素进行放大的作用,但是这两个属性在放大时的计算方法不同,在使用时候要注意,使用正确的放大属性,从而达到自己想要的效果。

先来看下两个属性的不同之处吧~

这是一个宽600px的弹性盒子,其中每个子元素的宽度都为100px。我们分别使用flex和flex-grow对子元素进行放大。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. article {
  10. width: 600px;
  11. height: 200px;
  12. margin: 50px auto;
  13. display: flex;
  14. border: 1px dashed black;
  15. }
  16. div {
  17. width: 100px;
  18. height: 100px;
  19. }
  20. div:nth-child(1) {
  21. flex: 1;
  22. background-color: darkorange;
  23. }
  24. div:nth-child(2) {
  25. flex: 2;
  26. background-color: skyblue;
  27. }
  28. div:nth-child(3) {
  29. background-color: thistle;
  30. }
  31. </style>
  32. </head>
  33.  
  34. <body>
  35. <article>
  36. <div>1</div>
  37. <div>2</div>
  38. <div>3</div>
  39. </article>
  40. </body>
  41.  
  42. </html>

页面效果

使用flex放大子元素:
step1:计算剩余空间,剩余空间为弹性盒子剩余的宽度与进行flex的子元素的宽度之和。
例中的剩余宽度为300px ,进行flex的子元素宽度分别是100,100,所以剩余空间为500px。
step2: 按照进行flex属性值、数字的比例进行分配空间。第一个div和第二个div的比例为1:2。因此其宽度分别为166.66px,333.34px。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. article {
  10. width: 600px;
  11. height: 200px;
  12. margin: 50px auto;
  13. display: flex;
  14. border: 1px dashed black
  15. }
  16. div {
  17. width: 100px;
  18. height: 100px;
  19. }
  20. div:nth-child(1) {
  21. flex-grow: 1;
  22. background-color: darkorange;
  23. }
  24. div:nth-child(2) {
  25. flex-grow: 2;
  26. background-color: skyblue;
  27. }
  28. div:nth-child(3) {
  29. background-color: thistle;
  30. }
  31. </style>
  32. </head>
  33.  
  34. <body>
  35. <article>
  36. <div>flex-grow: 1;
  37. <p>199.34px</p>
  38. </div>
  39. <div>flex-grow: 2;
  40. <p>298.66px</p>
  41. </div>
  42. <div>3
  43. <p>100px</p>
  44. </div>
  45. </article>
  46. </body>
  47.  
  48. </html>

页面效果

使用flex-grow放大子元素
step1:计算剩余空间,剩余空间为弹性盒子的剩余宽度。
例中的剩余宽度为300px
step2: 按照进行flex属性值,数字的比例进行分配空间。第一个div和第二个div的比例为1:2。因此其宽度分别为100px ,200px。
step3:元素自身的宽度加上分配到的剩余空间就是放大后的宽度。因此其最终显示出来宽度分别为200px ,300px。

版权声明:本文为jinyuting原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jinyuting/p/13199704.html