Blogger Information
Blog 9
fans 0
comment 0
visits 7589
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
盒模型基础、定位、定位和浮动实现布局和圣杯布局及其思想
金牌马甲
Original
673 people have browsed it

盒模型

盒模型基础

代码展示:

  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>盒模型基础和box-sizing属性</title>
  7. <style>
  8. .box {
  9. width: 200px;
  10. height: 150px;
  11. }
  12. .box.one {
  13. border: 5px solid black;
  14. background-color: lightgreen;
  15. margin: 10px;
  16. padding: 15px;
  17. float: left;
  18. box-sizing: content-box;
  19. /* 默认盒模型计算公式 = 内容区 + 内边距 + 边框 */
  20. /* 盒子宽度 = width + padding-left + padding-right + border-left + border-right = 200 + 15 + 15 + 5 + 5 = 240 */
  21. }
  22. .box.two {
  23. border: 5px solid black;
  24. background-color: lightblue;
  25. margin: 10px;
  26. padding: 15px;
  27. float: left;
  28. box-sizing: border-box;
  29. /* 自定义盒模型大小: */
  30. /* box-sizing: border-box,此时,盒子宽度等于width,高度等于height,内容区被压缩; */
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div class="box one">box1</div>
  36. <div class="box two">box2</div>
  37. </body>
  38. </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. <title>绝对定位、相对定位、固定定位</title>
  7. <style>
  8. .box {
  9. width: 200px;
  10. height: 200px;
  11. border: 1px solid black;
  12. }
  13. .box.one {
  14. background-color: lightgreen;
  15. /* 固定定位,始终对于当前窗口定位 */
  16. position: fixed;
  17. top: 50px;
  18. left: 100px;
  19. }
  20. .box.two {
  21. background-color: lightblue;
  22. width: 50px;
  23. height: 50px;
  24. /* 绝对定位,以父级包含块为参照物定位(父级参照物必须包含定位属性,否则再往上找寻定位父级,直到body/html) */
  25. position: absolute;
  26. top: 30px;
  27. right: 20px;
  28. }
  29. .box.three {
  30. background-color: lightcyan;
  31. /* 相对定位,相对于自己之前的位置进行定位 */
  32. position: relative;
  33. top: 120px;
  34. left: 10px;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <div class="box one">
  40. box1
  41. <div class="box two">box2</div>
  42. </div>
  43. <div class="box three">box3</div>
  44. </body>
  45. </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. <title>绝对定位实现垂直居中</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. .box.one {
  13. width: 400px;
  14. height: 500px;
  15. border: 5px solid black;
  16. background-color: lightgreen;
  17. position: relative;
  18. }
  19. .box.two {
  20. width: 200px;
  21. height: 200px;
  22. border: 5px dashed black;
  23. background-color: lightcyan;
  24. box-sizing: border-box;
  25. /* 使用绝对定位实现垂直居中。 */
  26. position: absolute;
  27. top: 0;
  28. right: 0;
  29. bottom: 0;
  30. left: 0;
  31. margin-top: auto;
  32. /* margin-right: auto; */
  33. margin-bottom: auto;
  34. /* margin-left: auto; */
  35. /* margin: auto; */
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="box one">
  41. box1
  42. <div class="box two">box2</div>
  43. </div>
  44. </body>
  45. </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. <title>使用绝对定位实现二列布局</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. .header,
  13. .footer {
  14. width: 100%;
  15. height: 40px;
  16. background-color: cyan;
  17. }
  18. .container {
  19. width: 1000px;
  20. min-height: 600px;
  21. background-color: #eeeeee;
  22. margin: 10px auto;
  23. position: relative;
  24. }
  25. .left {
  26. width: 480px;
  27. min-height: 600px;
  28. background-color: lightgreen;
  29. position: absolute;
  30. margin-right: 20px;
  31. }
  32. .right {
  33. width: 480px;
  34. min-height: 600px;
  35. background-color: lightgreen;
  36. position: absolute;
  37. right: 0;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="header"></div>
  43. <div class="container">
  44. <div class="left">左侧</div>
  45. <div class="right">右侧</div>
  46. </div>
  47. <div class="footer"></div>
  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. <title>使用浮动实现三列布局</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. .header,
  14. .footer {
  15. height: 40px;
  16. background-color: lightgreen;
  17. }
  18. .container {
  19. width: 1000px;
  20. background-color: #eeeeee;
  21. margin: 10px auto;
  22. overflow: hidden;
  23. }
  24. .left,
  25. .right {
  26. width: 200px;
  27. min-height: 600px;
  28. background-color: lightyellow;
  29. }
  30. .main {
  31. width: 600px;
  32. min-height: 600px;
  33. background-color: limegreen;
  34. float: left;
  35. }
  36. .left {
  37. float: left;
  38. }
  39. .right {
  40. float: right;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <div class="header"></div>
  46. <div class="container">
  47. <div class="left">左侧</div>
  48. <div class="main">主体</div>
  49. <div class="right">右侧</div>
  50. </div>
  51. <div class="footer"></div>
  52. </body>
  53. </html>

运行效果:

圣杯布局实现三列布局及其思想

圣杯布局思想:

  1. 主体内容区必须优先渲染,DOM结构中把主体内容区写在前面。
  2. 主体内容区必须自适应,占据整个容器的全部空间。
  3. 内容区和左右区域全部浮动(左浮动)。
  4. 通过给左右两侧设置margin的负值,使其回到容器的正确位置上。
  5. 给容器设置左右两侧的padding,将左右区域挤出来,宽度要与左右两侧宽度相等。
  6. 最后给左右两侧相对定位,使其回到正确的位置。

代码展示:

  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. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. .header,
  14. .footer {
  15. height: 40px;
  16. background-color: cyan;
  17. }
  18. .container {
  19. margin: 10px auto;
  20. /* 包裹浮动子元素 */
  21. overflow: hidden;
  22. /* padding挤出两侧区域 */
  23. padding: 0 200px;
  24. }
  25. .container * {
  26. min-height: 600px;
  27. /* 内容区、左右两侧全部浮动 */
  28. float: left;
  29. }
  30. .main {
  31. /* 内容区自适应 */
  32. width: 100%;
  33. background-color: yellow;
  34. }
  35. .left,
  36. .right {
  37. width: 200px;
  38. background-color: cyan;
  39. }
  40. .left {
  41. /* margin负值,回到容器 */
  42. margin-left: -100%;
  43. /* 相对定位,回到正确位置 */
  44. position: relative;
  45. right: 200px;
  46. }
  47. .right {
  48. /* margin负值,回到容器 */
  49. margin-left: -200px;
  50. /* 相对定位,回到正确位置 */
  51. position: relative;
  52. left: 200px;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <div class="header"></div>
  58. <div class="container">
  59. <!-- 主体区块优先渲染 -->
  60. <div class="main">主体</div>
  61. <div class="left">左侧</div>
  62. <div class="right">右侧</div>
  63. </div>
  64. <div class="footer"></div>
  65. </body>
  66. </html>

运行效果:

Correcting teacher:天蓬老师天蓬老师

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