CSS之布局系列--三列布局(中间固定,两边自适应)--方法/实例

今天药忘吃喽~ 2023-10-02 16:57 70阅读 0赞

原文网址:CSS之布局系列—三列布局—中间固定,两边自适应—方法/实例_IT利刃出鞘的博客-CSDN博客

简介

本文用示例介绍CSS三列布局的方案。

三列布局,即:左,中,右。有两种方案:1.两边固定,中间自适应;2.中间固定,两边自适应。本文介绍第2种方案,第1种方案见:CSS—三列布局—两边固定,中间自适应—实例_IT利刃出鞘的博客-CSDN博客。

中间固定,两边自适应,一般不太常用。比如:一个网站要适应不同的电脑屏幕大小,一般是确定两边的宽度,中间自适应。

中间固定,两边自适应,一共有如下几种方案:

  1. flex布局(推荐)
  2. 浮动布局(float)
  3. calc计算
  4. grid布局
  5. 负的margin布局(不推荐)

方案1:flex(推荐)

利用flex-grow进行布局,详见 flex-grow属性。

优点

  1. 简单

缺点

  1. 不兼容旧浏览器

示例

代码

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>This is title</title>
  6. <style>
  7. html, body {
  8. margin: 0; /*若不设置,默认为8px*/
  9. }
  10. .container>div {
  11. height: 100px;
  12. }
  13. .container {
  14. display:flex;
  15. flex-direction:row;
  16. }
  17. .aside-left {
  18. flex-grow: 1;
  19. width: 300px;
  20. background-color: #a9ff29;
  21. }
  22. .middle {
  23. width:1600px;
  24. left: 300px;
  25. right: 200px;
  26. background-color: #ffb91b;
  27. }
  28. .aside-right {
  29. flex-grow: 1;
  30. width: 200px;
  31. background-color: #40c3ff;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <div class="container">
  37. <div class="aside-left">左侧</div>
  38. <div class="middle">中间</div>
  39. <div class="aside-right">右侧</div>
  40. </div>
  41. </body>
  42. </html>

结果

40b59856bb5844c9acf2fa4e6623181b.png

方案2:浮动(float)

优点

  1. 兼容旧浏览器

缺点

  1. 主体内容需要放到最后,当页面元素较多时候对开发不友好。

示例

代码

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>This is title</title>
  6. <style>
  7. html, body {
  8. margin: 0; /*若不设置,默认为8px*/
  9. }
  10. .container>div {
  11. height: 100px;
  12. }
  13. .aside-left, .aside-right {
  14. float: left;
  15. width: 300px;
  16. background-color: #a9ff29;
  17. }
  18. .middle {
  19. margin: 0 200px 0 300px;
  20. background-color: #ffb91b;
  21. }
  22. .aside-right {
  23. float: right;
  24. width: 200px;
  25. background-color: #40c3ff;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <div class="container">
  31. <div class="aside-left">左侧</div>
  32. <div class="aside-right">右侧</div>
  33. <div class="middle">中间</div>
  34. </div>
  35. </body>
  36. </html>

结果

c6813d8de2be487b90be46285f012c86.png

方案3:采用calc计算

优点

  1. 兼容旧浏览器

缺点

  1. 两边只能一样宽

示例

代码

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>This is title</title>
  6. <style>
  7. html, body {
  8. margin: 0; /*若不设置,默认为8px*/
  9. }
  10. .container>div {
  11. height: 100px;
  12. }
  13. .container {
  14. width: 100%;
  15. }
  16. .aside-left {
  17. float: left;
  18. width: calc(50% - 800px);
  19. background-color: #a9ff29;
  20. }
  21. .middle {
  22. float: left;
  23. width: 1600px;
  24. background-color: #ffb91b;
  25. }
  26. .aside-right {
  27. float: left;
  28. width: calc(50% - 800px);
  29. background-color: #40c3ff;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="container">
  35. <div class="aside-left">左侧</div>
  36. <div class="middle">中间</div>
  37. <div class="aside-right">右侧</div>
  38. </div>
  39. </body>
  40. </html>

结果

f7b66bc9d72b42a78885d68eda79cc4a.png

方案4:网格(grid)(不推荐)

网格布局是比较新的东西,这个布局是新的css标准下的特性。在响应式布局大行其道的移动互联网时代,bootstrap之类的是对栅格化布局框架非常流行,而网格布局,就是对栅格布局的标准化实现。

优点

  1. 简单、清晰

缺点

  1. 两边只能一样宽
  2. 新CSS标准的特性,兼容性不太好

示例

代码

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>This is title</title>
  6. <style>
  7. html, body {
  8. margin: 0; /*若不设置,默认为8px*/
  9. }
  10. .container {
  11. display:grid;
  12. grid-template-rows: 100px;
  13. grid-template-columns: auto 1600px auto;
  14. }
  15. .middle {
  16. background-color: #ffb91b;
  17. }
  18. .aside-left {
  19. background-color: #a9ff29;
  20. }
  21. .aside-right {
  22. background-color: #40c3ff;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="container">
  28. <div class="aside-left">左侧</div>
  29. <div class="middle">中间</div>
  30. <div class="aside-right">右侧</div>
  31. </div>
  32. </body>
  33. </html>

结果

54bafdac5e2a4932be488c5fae88d428.png

方案5:负的margin(不推荐)

比较麻烦。两边和中间的元素都要在外边套一个div,然后用margin控制。本处忽略不写了。

其他网址

css三列布局—两边固定中间自适应和中间固定两边自适应_DOM曼珠沙华的博客-CSDN博客

发表评论

表情:
评论列表 (有 0 条评论,70人围观)

还没有评论,来说两句吧...

相关阅读