博客列表 >flex布局涉及到的12个属性和实例

flex布局涉及到的12个属性和实例

樊天龙的博客
樊天龙的博客原创
2020年04月13日 17:09:08897浏览

flex布局涉及到的12个属性和实例

1.为什么要使用flex布局?

flex意为弹性布局,布局元素大小在flex容器中自动伸缩,以适应容器的变化,特别适合响应式布局

2.容器上的6个属性

序号 名称 描述
1. flex-direction 主轴方向
2. flex-wrap 主轴上项目换行方式
3. flex-flow 主轴方向和主轴上的项目换行方式的复合属性
4. justify-content 主轴上的项目对齐方式
5. align-items 交叉轴上的项目对齐方式(适用于单行容器)
6. align-content 交叉轴上的项目对齐方式(适用于多行容器)

2.1主轴方向flex-direction

2.1.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. /* 将容器设置为flex容器 */
  9. display: flex;
  10. /* 设置主轴的方向,默认从左到右排列 */
  11. flex-direction: row;
  12. /* 主轴方向从右到左 */
  13. /* flex-direction: row-reverse; */
  14. /* 主轴方向从上到下 */
  15. /* flex-direction: column; */
  16. /* 主轴方向从下到上 */
  17. /* flex-direction: column-reverse; */
  18. width: 300px;
  19. height: 150px;
  20. }
  21. .item {
  22. width: 100px;
  23. height: 100px;
  24. }
  25. </style>
  26. <title>Document</title>
  27. </head>
  28. <body>
  29. <div class="flex-container">
  30. <div class="item">flex1</div>
  31. <div class="item">flex2</div>
  32. <div class="item">flex3</div>
  33. <div class="item">flex4</div>
  34. </div>
  35. </body>
  36. </html>

2.1.2效果图

2.2项目换行方式flex-wrap

2.2.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. display: flex;
  9. /* 设置主轴方向项目换行方式,默认不换行 */
  10. flex-wrap: nowrap;
  11. /* 换行 */
  12. /* flex-wrap: wrap; */
  13. /* 反向换行 */
  14. /* flex-wrap: wrap-reverse; */
  15. width: 300px;
  16. height: 300px;
  17. }
  18. .item {
  19. width: 100px;
  20. height: 100px;
  21. }
  22. </style>
  23. <title>Document</title>
  24. </head>
  25. <body>
  26. <div class="flex-container">
  27. <div class="item">flex1</div>
  28. <div class="item">flex2</div>
  29. <div class="item">flex3</div>
  30. <div class="item">flex4</div>
  31. </div>
  32. </body>
  33. </html>

2.2.2效果图

2.3flex-flow

2.3.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. display: flex;
  9. /* flex-flow:为flex-direction和flex-wrap的复合属性 */
  10. flex-flow: row wrap;
  11. width: 300px;
  12. height: 300px;
  13. }
  14. .item {
  15. width: 100px;
  16. height: 100px;
  17. }
  18. </style>
  19. <title>Document</title>
  20. </head>
  21. <body>
  22. <div class="flex-container">
  23. <div class="item">flex1</div>
  24. <div class="item">flex2</div>
  25. <div class="item">flex3</div>
  26. <div class="item">flex4</div>
  27. </div>
  28. </body>
  29. </html>

2.3.2效果图

2,4.主轴上的项目对齐方式justify-content

2.4.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. display: flex;
  9. width: 500px;
  10. height: 150px;
  11. /* 主轴上项目对齐方式,默认左对齐 */
  12. justify-content: flex-start;
  13. /* 右对齐 */
  14. /* justify-content: flex-end; */
  15. /* 居中对齐 */
  16. /* justify-content: center; */
  17. /* 两端对齐 */
  18. /* justify-content: space-between; */
  19. /* 分散对齐,项目间距是两侧两倍 */
  20. /* justify-content: space-around; */
  21. /* 平均对齐 */
  22. /* justify-content: space-evenly; */
  23. }
  24. .item {
  25. width: 100px;
  26. height: 100px;
  27. }
  28. </style>
  29. <title>Document</title>
  30. </head>
  31. <body>
  32. <div class="flex-container">
  33. <div class="item">flex1</div>
  34. <div class="item">flex2</div>
  35. <div class="item">flex3</div>
  36. <div class="item">flex4</div>
  37. </div>
  38. </body>
  39. </html>

2.4.2效果图

2.5交叉轴上的项目对齐方式(适用于单行容器)align-items

2.5.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. display: flex;
  9. /* 交叉轴对齐方式,默认为起始线对齐 */
  10. align-items: flex-start;
  11. /* 终止线对齐 */
  12. /* align-items: flex-end; */
  13. /* 居中对齐 */
  14. /* align-items: center; */
  15. width: 400px;
  16. height: 150px;
  17. }
  18. .item {
  19. width: 100px;
  20. height: 100px;
  21. }
  22. </style>
  23. <title>Document</title>
  24. </head>
  25. <body>
  26. <div class="flex-container">
  27. <div class="item">flex1</div>
  28. <div class="item">flex2</div>
  29. <div class="item">flex3</div>
  30. <div class="item">flex4</div>
  31. </div>
  32. </body>
  33. </html>

2.5.2效果图

2.6交叉轴上的项目对齐方式(适用于多行容器)

2.6.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. display: flex;
  9. flex-flow: row wrap;
  10. /* 多行容器项目交叉轴对齐方式,默认为stretch */
  11. /* align-content: stretch; */
  12. /* 起始线对齐 */
  13. align-content: flex-start;
  14. /* 终止线对齐 */
  15. /* align-content: flex-end; */
  16. /* 居中对齐 */
  17. /* align-content: center; */
  18. /* 两端对齐 */
  19. /* align-content: space-between; */
  20. /* 分散对齐 */
  21. /* align-content: space-around; */
  22. /* 平均对齐 */
  23. /* align-content: space-evenly; */
  24. width: 300px;
  25. height: 300px;
  26. }
  27. .item {
  28. width: 100px;
  29. height: 100px;
  30. }
  31. </style>
  32. <title>Document</title>
  33. </head>
  34. <body>
  35. <div class="flex-container">
  36. <div class="item">flex1</div>
  37. <div class="item">flex2</div>
  38. <div class="item">flex3</div>
  39. <div class="item">flex4</div>
  40. </div>
  41. </body>
  42. </html>

2.6.2效果图

效果图同主轴对齐方式

3.项目上的6个属性

序号 名称 描述
1. order 项目排序
2. align-self 交叉轴独立对齐方式
3.
3.
3.
3.

3.1项目排序order

3.1.1源代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <style>
  7. .flex-container {
  8. display: flex;
  9. width: 400px;
  10. /* 项目排序,默认为0,支持负数
  11. 数值越小排在前面
  12. */
  13. /* order: 0; */
  14. }
  15. .item {
  16. width: 100px;
  17. height: 100px;
  18. }
  19. .item:first-of-type {
  20. order: 4;
  21. }
  22. .item:nth-of-type(2) {
  23. order: 1;
  24. }
  25. .item:nth-of-type(3) {
  26. /* 支持负数排序 */
  27. order: -1;
  28. }
  29. .item:last-of-type {
  30. order: 6;
  31. }
  32. </style>
  33. <title>Document</title>
  34. </head>
  35. <body>
  36. <div class="flex-container">
  37. <div class="item">flex1</div>
  38. <div class="item">flex2</div>
  39. <div class="item">flex3</div>
  40. <div class="item">flex4</div>
  41. </div>
  42. </body>
  43. </html>

3.1.2效果图

4.总结

  • flex基础虽然已经掌握,但是实战中用的还是不是很熟练
  • 常用的属性可以写成复合属性,来简化代码
  • 后端学习时还可以再仔细研究和练习下
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议