经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
CSS3 FLEX 弹性盒模型让布局飞起来 -cyy
来源:cnblogs  作者:陈莺莺呀  时间:2020/11/9 15:18:25  对本文有异议

弹性布局初体验:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. main{
  15. width:100%;
  16. height:100vh;
  17. display:flex;
  18. }
  19. nav{
  20. width:80px;
  21. background:pink;
  22. }
  23. article{
  24. background:lightblue;
  25. flex:1;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <main>
  31. <nav></nav>
  32. <article></article>
  33. </main>
  34. </body>
  35. </html>

 

 

使用弹性盒模型布局底部菜单栏:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. body{
  15. display:flex;
  16. height:100vh;
  17. flex-direction:column;
  18. }
  19. main{
  20. background:pink;
  21. flex:1;
  22. }
  23. footer{
  24. height:60px;
  25. background:#ddd;
  26. display:flex;
  27. justify-content: space-evenly;
  28. }
  29. footer div{
  30. flex:1;
  31. text-align:center;
  32. line-height:60px;
  33. color:#555;
  34. }
  35. footer div:nth-of-type(n+2){
  36. border-left:1px solid #ccc;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <main></main>
  42. <footer>
  43. <div>item</div>
  44. <div>item</div>
  45. <div>item</div>
  46. <div>item</div>
  47. </footer>
  48. </body>
  49. </html>

 

 

改变弹性元素方向:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. display:flex;
  18. flex-direction:row;
  19. flex-direction:row-reverse;
  20. flex-direction:column;
  21. flex-direction:column-reverse;
  22. }
  23. /* article下的所有子元素 */
  24. article *{
  25. width:100px;
  26. height:100px;
  27. background:lightblue;
  28. margin:5px;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <article>
  34. <div>1</div>
  35. <div>2</div>
  36. <div>3</div>
  37. </article>
  38. </body>
  39. </html>

 

 

控制弹性元素溢出换行处理:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. display:flex;
  18. flex-direction:row;
  19. flex-wrap:wrap;
  20. flex-wrap:wrap-reverse;
  21. }
  22. /* article下的所有子元素 */
  23. article *{
  24. width:140px;
  25. height:140px;
  26. background:lightblue;
  27. margin:5px;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <article>
  33. <div>1</div>
  34. <div>2</div>
  35. <div>3</div>
  36. </article>
  37. </body>
  38. </html>

 

 

统一设置元素的排列方式与换行:

flex-direction + flex-wrap = flex-flow

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. display:flex;
  18. flex-flow:row wrap;
  19. }
  20. /* article下的所有子元素 */
  21. article *{
  22. width:140px;
  23. height:140px;
  24. background:lightblue;
  25. margin:5px;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <article>
  31. <div>1</div>
  32. <div>2</div>
  33. <div>3</div>
  34. </article>
  35. </body>
  36. </html>

 

主轴元素的多种排列方式:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. display:flex;
  18. /* 主轴开始 */
  19. justify-content:flex-start;
  20. /* 主轴结束 */
  21. justify-content:flex-end;
  22. /* 整体居中 */
  23. justify-content:center;
  24. /* 左右两边距离相等 */
  25. justify-content:space-around;
  26. /* 左右靠边,中间平分 */
  27. justify-content:space-between;
  28. /* 完全平分 */
  29. justify-content: space-evenly;
  30. }
  31. /* article下的所有子元素 */
  32. article *{
  33. width:80px;
  34. height:80px;
  35. background:lightblue;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <article>
  41. <div>1</div>
  42. <div>2</div>
  43. <div>3</div>
  44. </article>
  45. </body>
  46. </html>

 

 

交叉轴元素的多种排列方式:

【单行情况下】

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. height:100vh;
  18. display:flex;
  19. /* 交叉轴开始 */
  20. align-items:flex-start;
  21. /* 交叉轴结束 */
  22. align-items:flex-end;
  23. /* 交叉轴居中 */
  24. align-items:center;
  25. /* 交叉轴拉伸,当direcrion为row时,需要元素不设置高度;当direction为column时,需要元素不设置宽度 */
  26. align-items:stretch;
  27. }
  28. /* article下的所有子元素 */
  29. article *{
  30. width:80px;
  31. /* height:80px; */
  32. background:lightblue;
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <article>
  38. <div>1</div>
  39. <div>2</div>
  40. <div>3</div>
  41. </article>
  42. </body>
  43. </html>

 

 

水平垂直居中:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. height:100vh;
  18. display:flex;
  19. justify-content: center;
  20. align-items:center;
  21. }
  22. /* article下的所有子元素 */
  23. article *{
  24. width:80px;
  25. height:80px;
  26. background:lightblue;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <article>
  32. <div>1</div>
  33. <div>2</div>
  34. <div>3</div>
  35. </article>
  36. </body>
  37. </html>

 

 

多行元素在交叉轴的排列方式:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. height:100vh;
  18. display:flex;
  19. flex-wrap:wrap;
  20. align-content: flex-start;
  21. align-content: flex-end;
  22. align-content: center;
  23. align-content: space-around;
  24. align-content: space-between;
  25. align-content: space-evenly;
  26. }
  27. /* article下的所有子元素 */
  28. article *{
  29. width:120px;
  30. height:120px;
  31. background:lightblue;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <article>
  37. <div>1</div>
  38. <div>2</div>
  39. <div>3</div>
  40. <div>4</div>
  41. <div>5</div>
  42. </article>
  43. </body>
  44. </html>

 

 

弹性元素交叉轴控制:

【针对单一元素】

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. height:100vh;
  18. display:flex;
  19. }
  20. /* article下的所有子元素 */
  21. article *{
  22. width:120px;
  23. height:120px;
  24. background:lightblue;
  25. }
  26. article :first-child{
  27. align-self:stretch;
  28. height:auto;
  29. }
  30. article :nth-child(2){
  31. align-self:center;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <article>
  37. <div>1</div>
  38. <div>2</div>
  39. <div>3</div>
  40. </article>
  41. </body>
  42. </html>

 

 

元素可用空间分配:

  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. <meta name="keywords" content="关键词1,关键词2,关键词3">
  7. <meta name="description" content="网站描述bla bla">
  8. <title>网站标题</title>
  9. <style>
  10. *{
  11. margin:0;
  12. padding:0;
  13. }
  14. article{
  15. border:1px solid pink;
  16. width:100%;
  17. height:100vh;
  18. display:flex;
  19. }
  20. /* article下的所有子元素 */
  21. article *{
  22. width:80px;
  23. height:80px;
  24. background:lightblue;
  25. padding:10px;
  26. background-clip:content-box;
  27. border:1px solid lightblue;
  28. }
  29. article :first-child{
  30. /* 不平分,默认的宽度 */
  31. flex-grow:0;
  32. }
  33. article :nth-child(2){
  34. flex-grow:2;
  35. }
  36. article :nth-child(3){
  37. flex-grow:3;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <article>
  43. <div>1</div>
  44. <div>2</div>
  45. <div>3</div>
  46. </article>
  47. </body>
  48. </html>

 

原文链接:http://www.cnblogs.com/chenyingying0/p/13945942.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号