Blogger Information
Blog 19
fans 0
comment 0
visits 8374
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
flex 容器常用的 6 个属性
Wu.Ang
Original
566 people have browsed it

flex 容器常用的 6 个属性

flex 容器,就是一个块元素,只在一个方向上排列元素(默认水平排列)

  1. 主轴 : 元素排列
  2. 交叉轴 : 元素对齐
  3. 所有子元素自动转为行内级的块元素
  4. 沿主轴排列
  5. 剩余空间 : 未分配的空间,可以利用的空间
  6. 项目 : 容器中的子元素(只能是子元素)

属性

  1. 第一个属性 : flex-flow , 控制主轴方向与是否换行
  2. 第二个属性 : place-content , 剩余空间在项目中如何分配
  3. 第三个属性 : place-items , 项目在交叉轴对齐

将当前元素转为弹性盒子 display:flex;

  1. .container {
  2. /* 转为弹性盒子 */
  3. display: flex;
  4. /* 支持宽高 */
  5. }

主轴方向 flex-direction:row(行方向)/column(列方向);

  1. .container {
  2. /* 主轴方向为行方向 */
  3. flex-direction: row;
  4. /* 主轴方向为列方向 */
  5. flex-direction: column;
  6. }

项目在主轴上是否允许换行 flex-wrap:wrap/nowrap;

  1. .container {
  2. /* 允许换行 */
  3. flex-wrap: wrap;
  4. /* 不换行,默认 压缩子元素空间*/
  5. flex-wrap: nowrap;
  6. }

主轴方向和是否允许换行简写

  1. .container {
  2. /* flex-flow:flex-direction flex-wrap; */
  3. flex-flow: row nowrap;
  4. }

剩余空间如何分配 place-content: ;

  1. .container {
  2. /* 一、将所有项目看成一个整体,将剩余空间在所有项目两边进行分配 */
  3. /* 1.默认值:将剩余空间放在所有项目右边,所有项目从左边开始排列 */
  4. place-content: start;
  5. /* 2.将剩余空间放在所有项目左边,所有项目从右边开始排列 */
  6. place-content: end;
  7. /* 3.将剩余空间在项目两边平均分配 */
  8. place-content: center;
  9. /* 二、将所有项目看成独立的个体,将剩余空间在所有项目之间进行分配 */
  10. /* 1.两端对齐 */
  11. place-content: space-between;
  12. /* 2.分散对齐 */
  13. place-content: space-around;
  14. /* 3.平均对齐 */
  15. place-content: space-evenly;
  16. }

项目在交叉轴上的对齐 place-items: ;

  1. .container {
  2. /* 1.默认值:自动伸展 */
  3. place-items: stretch;
  4. /* 2.上对齐 */
  5. place-items: start;
  6. /* 3.下对齐 */
  7. place-items: end;
  8. }
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>flex</title>
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. body * {
  15. outline: 1px dashed red;
  16. }
  17. body .container {
  18. height: 20em;
  19. /* 改变为弹性盒子 */
  20. display: flex;
  21. border: 1px solid;
  22. /* 一、主轴方向 */
  23. /* 主轴方向为行方向 */
  24. /* flex-direction: row; */
  25. /* 主轴方向为列方向 */
  26. /* flex-direction: column; */
  27. /* 二、是否允许换行 */
  28. /* flex-wrap: wrap; */
  29. /* flex-wrap: nowrap; */
  30. /* 三、主轴方向和允许换行 */
  31. /* flex-flow: row nowrap; */
  32. /* 四、剩余空间的分配 */
  33. /* place-content: start; */
  34. /* place-content: end; */
  35. /* place-content: center; */
  36. /* place-content: space-between; */
  37. /* place-content: space-around; */
  38. /* place-content: space-evenly; */
  39. /* 五、交叉轴对齐 */
  40. /* place-items: stretch; */
  41. /* place-items: start; */
  42. /* place-items: end; */
  43. }
  44. body .container .item {
  45. width: 10em;
  46. text-align: center;
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <div class="container">
  52. <div class="item">item1</div>
  53. <div class="item">item2</div>
  54. <div class="item">item3</div>
  55. </div>
  56. </body>
  57. </html>

项目常用属性

1.flex : 放大因子 收缩因子 计算宽度;

  1. .container > .item{
  2. flex:0 1 auto; /* 默认值 */
  3. /* 替代语法 */
  4. flex:initial;
  5. /* 设置了项目宽度,所以auto直接引用width */
  6. /* 如果在flex中自定义width,则flex.width>.item.width */
  7. /* 如果设置了min-width,则它权重最大,min-width > flex.width > .item.width */
  8. /* 完全响应式 : 允许放大 允许缩小 宽度自动 */
  9. flex:1 1 auto;
  10. /* 替代语法 */
  11. flex:auto;
  12. /* pc布局 : 完全失去响应 禁止放大 禁止缩小 */
  13. flex:0 0 auto;
  14. /* 代替语法 */
  15. flex:none;
  16. flex:1; => flex:1 1 auto;
  17. /* 如果省略第二、第三个值,则全取默认值 */
  18. }

2.order 可以改变项目在主轴上的排列顺序

  1. .container > .tiem:first-of-type {
  2. order: 0; /*默认值*/
  3. /* 值越小越靠前,值越大排列越往后,支持负数 */
  4. }

3.place-self 控制某一个项目在交叉轴的对齐

  1. .container > .tiem:first-of-type {
  2. place-self: start;
  3. }
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>flex</title>
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. body * {
  15. outline: 1px dashed red;
  16. }
  17. body .container {
  18. height: 20em;
  19. border: 1px solid;
  20. display: flex;
  21. }
  22. body .container .item {
  23. width: 10em;
  24. /* flex: 1 1 auto; => flex: auto; */
  25. /* flex: 0 1 auto; => flex: initial; */
  26. /* flex: 0 0 auto; => flex: none; */
  27. /* flex: 1 0 auto; => flex: 1*/
  28. }
  29. body .container .item:first-of-type {
  30. /* order: -10; */
  31. /* place-self: start; */
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <div class="container">
  37. <div class="item">item1</div>
  38. <div class="item">item2</div>
  39. <div class="item">item3</div>
  40. </div>
  41. </body>
  42. </html>
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post