欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FlexBox弹性盒布局和order属性

程序员文章站 2022-03-24 09:33:36
...

1. FlexBox弹性盒布局

1.1 FlexBox弹性盒布局快速预览

  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. <title>FlexBox弹性盒布局快速预览</title>
  7. <style>
  8. .container{
  9. width: 300px;
  10. /* 如果这个容器中的内容要使用flexbox布局,第一步就是必须将这个容器转为弹性盒子 */
  11. display: flex;
  12. }
  13. .container > .item{
  14. /* 一旦将父元素转为弹性容器,内部的“子元素”就会自动成为:弹性项目 */
  15. /* 不管这个项目标签之前是什么类型,统统转为“行内块” */
  16. /* 行内:全部在一排显示 */
  17. /* 块:可以设置宽和高 */
  18. flex: auto;
  19. /* width: 60px;
  20. height: 60px; */
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="container">
  26. <div class="item">1</div>
  27. <span class="item">2</span>
  28. <a class="item">3</a>
  29. <a class="item">4</a>
  30. <a class="item">5</a>
  31. <a class="item">6</a>
  32. <a class="item">7</a>
  33. </div>
  34. </body>
  35. </html>

FlexBox弹性盒布局和order属性

1.2 FlexBox弹性盒布局换行显示

  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. <title>FlexBox弹性盒布局快速预览</title>
  7. <style>
  8. .container{
  9. width: 300px;
  10. /* 弹性容器 */
  11. display: flex;
  12. }
  13. .container > .item{
  14. /* width: 60px; */
  15. /* width: 50px; */
  16. width: 150px;
  17. }
  18. /* 换行显示 */
  19. .container{
  20. flex-wrap: wrap;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="container">
  26. <div class="item">1</div>
  27. <div class="item">2</div>
  28. <div class="item">3</div>
  29. <div class="item">4</div>
  30. <div class="item">5</div>
  31. <div class="item">6</div>
  32. </div>
  33. </body>
  34. </html>

FlexBox弹性盒布局和order属性

1.3 单行容器中的项目对齐方式

  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. <title>单行容器中的项目对齐方式</title>
  7. <style>
  8. .container{
  9. display: flex;
  10. width: 300px;
  11. /* justify-content: 控制所有项目在主轴上的对齐方式; */
  12. /* 本质是:设置容器中的剩余空间在所有“项目之间”的分配方案 */
  13. /* 1.容器剩余空间在所有项目两边的如何分配,将全部项目视为一个整体 */
  14. /* justify-content: flex-start;
  15. justify-content: flex-end;
  16. justify-content: center; */
  17. /* justify-content: start;
  18. justify-content: left; */
  19. /* 2.容器剩余空间在所有项目之间的如何分配,将项目视为一个独立的个体 */
  20. /* justify-content: space-between; */
  21. /* 分散对齐:剩余空间在所有项目两侧评价分配 */
  22. justify-content: space-around;
  23. justify-content: space-evenly;
  24. }
  25. .container > .item{
  26. width: 60px;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <div class="container">
  32. <div class="item">1</div>
  33. <div class="item">2</div>
  34. <div class="item">3</div>
  35. </div>
  36. </body>
  37. </html>

FlexBox弹性盒布局和order属性

1.4 多行容器中的项目对齐方式

由于代码过多重复只写重点代码:

  1. <style>
  2. .container{
  3. display: flex;
  4. width: 300px;
  5. /* 多行容器 */
  6. flex-wrap: wrap;
  7. height: 150px;
  8. /* align-content: 设置多行容器中的项目排列; */
  9. /* 1.容器剩余空间在所有项目两边的如何分配,将全部项目视为一个整体 */
  10. align-content: stretch;
  11. align-content: flex-start;
  12. align-content: flex-end;
  13. align-content: center;
  14. /* 2.容器剩余空间在所有项目之间的如何分配,将项目视为一个独立的个体 */
  15. align-content: space-between;
  16. align-content: space-around;
  17. align-content: space-evenly;
  18. }
  19. .container > .item{
  20. width: 60px;
  21. }
  22. </style>

FlexBox弹性盒布局和order属性

1.5 主轴为垂直方向时的项目排列

  1. <style>
  2. .container{
  3. display: flex;
  4. width: 300px;
  5. height: 150px;
  6. /* 主轴方向:默认为行 */
  7. /* flex-direction: row; */
  8. flex-direction: column;
  9. /* 项目两边分配 */
  10. justify-content: flex-start;
  11. justify-content: flex-end;
  12. justify-content: center;
  13. /* 项目之间分配 */
  14. justify-content: space-between;
  15. justify-content: space-around;
  16. justify-content: space-evenly;
  17. }
  18. </style>

FlexBox弹性盒布局和order属性

1.6 项目在交叉轴上的排列

  1. <style>
  2. .container{
  3. display: flex;
  4. width: 300px;
  5. height: 200px;
  6. /* 项目在交叉轴上默认是自动伸缩的 */
  7. align-items: stretch;
  8. align-items: flex-start;
  9. align-items: flex-end;
  10. align-items: center;
  11. }
  12. .container >.item{
  13. width: 60px;
  14. }
  15. </style>

FlexBox弹性盒布局和order属性

1.7 flex容器属性实战:快速鲁一个主导航

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-scale=1.0">
  6. <title>flex容器属性实战:快速鲁一个主导航</title>
  7. <style>
  8. /* 初始化 */
  9. *{
  10. padding: 0;
  11. margin: 0;
  12. box-sizing: border-box;
  13. }
  14. a{
  15. text-decoration: none;
  16. color: #ccc;
  17. }
  18. nav{
  19. height: 40px;
  20. background-color: #333;
  21. padding: 0 50px;
  22. /* 转为弹性盒布局 */
  23. display: flex;
  24. }
  25. nav a{
  26. height: inherit;
  27. line-height: 40px;
  28. padding: 0 10px;
  29. }
  30. nav a:hover{
  31. background-color: seagreen;
  32. color: white;
  33. }
  34. /* 登录注册放在最右边 */
  35. nav a:last-of-type{
  36. margin-left: auto;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <header>
  42. <nav>
  43. <a href="">首页</a>
  44. <a href="">视频教程</a>
  45. <a href="">社区问答</a>
  46. <a href="">资源下载</a>
  47. <a href="">登录/注册</a>
  48. </nav>
  49. </header>
  50. </body>
  51. </html lang="en">

FlexBox弹性盒布局和order属性

2.order属性

2.1 order控制项目顺序

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-scale=1.0">
  6. <title>项目属性:order控制项目顺序</title>
  7. <style>
  8. .container{
  9. width: 300px;
  10. display: flex;
  11. }
  12. .container > .item{
  13. width: 60px;
  14. }
  15. .container > .item:first-of-type{
  16. /* order: 默认是0; */
  17. order: 3;
  18. }
  19. .container > .item:last-of-type{
  20. order: 5;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="container">
  26. <div class="item">1</div>
  27. <div class="item">2</div>
  28. <div class="item">3</div>
  29. </div>
  30. </body>
  31. </html>

FlexBox弹性盒布局和order属性

2.2 order小案例,调整元素顺序

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-scale=1.0">
  6. <title>order小案例,调整元素顺序,比如小相册</title>
  7. <style>
  8. .container{
  9. width: 300px;
  10. display: flex;
  11. flex-direction: column;
  12. }
  13. .container > .item{
  14. border: 1px solid #000;
  15. padding: 10px;
  16. display: flex;
  17. position: relative;
  18. }
  19. .container >.item>div{
  20. display: flex;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="container">
  26. <div class="item">
  27. <div>1.jpg&nbsp;&nbsp;&nbsp;
  28. <button onclick="up(this)">Up</button>
  29. <button onclick="down(this)">down</button>
  30. </div>
  31. </div>
  32. <div class="item">2.jpg&nbsp;&nbsp;&nbsp;
  33. <div>
  34. <button onclick="up(this)">Up</button>
  35. <button onclick="down(this)">down</button>
  36. </div>
  37. </div>
  38. <div class="item">3.jpg&nbsp;&nbsp;&nbsp;
  39. <div>
  40. <button onclick="up(this)">Up</button>
  41. <button onclick="down(this)">down</button>
  42. </div>
  43. </div>
  44. </div>
  45. <script>
  46. let up=(ele) => (ele.offsetParent.style.order -=1);
  47. let down=(ele) => (ele.offsetParent.style.order +=1);
  48. </script>
  49. </body>
  50. </html>

FlexBox弹性盒布局和order属性

注意:个人建议使用火狐浏览器(FIREFOX)