Blogger Information
Blog 12
fans 1
comment 0
visits 9545
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
浮动元素高度塌陷产生的原因与解决方案,以及使用定位与浮动完成一个三列经典布局
浪子修罗记录有趣的事
Original
655 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>浮动元素的高度塌陷与解决方案</title>
  7. <style>
  8. .container {
  9. border: 2px dashed red;
  10. }
  11. .item {
  12. width: 150px;
  13. height: 150px;
  14. }
  15. /* 使用伪类顺序选择 */
  16. .item:nth-child(1) {
  17. background-color: blueviolet;
  18. }
  19. .item:nth-child(2) {
  20. background-color: brown;
  21. }
  22. .item:nth-child(3) {
  23. background-color: cadetblue;
  24. }
  25. /* 将三个子元素全部浮动 */
  26. .item {
  27. float: left;
  28. }
  29. /* 父元素包不住子元素,高度塌陷 */
  30. /* =============================== */
  31. /* 解决方案1:给父元素也添加一个高度 */
  32. /* .container {
  33. height: 150px;
  34. 该方案没办法做到自适应,如果item改变高度,那这个父元素也要随着改动,很麻烦
  35. } */
  36. /* ============================== */
  37. /* 解决方案2:把父元素也浮动起来 */
  38. /* .container {
  39. float: left;
  40. 该方案如果还有父级元素的话,就要逐级向上把父元素也浮动,添加很麻烦
  41. 该现象叫浮动传导效应
  42. } */
  43. /* 解决方案3:添加一个专用清浮动的元素 */
  44. /* .clear {
  45. clear: both;
  46. 由于要改动前端页面结构,影响后端数据渲染。所以不推荐使用。
  47. } */
  48. /* 解决方案4:通过添加一个伪元素来解决 */
  49. /* 在.container最后添加一个伪元素 */
  50. /* .container::after {
  51. 内容为空
  52. content: "";
  53. 样式为块
  54. display: block;
  55. 清浮动
  56. clear: both;
  57. } */
  58. /* 解决方案5:(最为常用)用到 BFC(块级格式化上下文) */
  59. .container {
  60. /* 常用 */
  61. overflow: hidden;
  62. /* 也可以用到 */
  63. /* overflow: auto; */
  64. }
  65. </style>
  66. </head>
  67. <body>
  68. <div class="container">
  69. <div class="item">1</div>
  70. <div class="item">2</div>
  71. <div class="item">3</div>
  72. <!-- <div class="clear"></div> -->
  73. </div>
  74. </body>
  75. </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. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. li {
  15. list-style: none;
  16. }
  17. a {
  18. text-decoration: none;
  19. color: lightslategrey;
  20. }
  21. .header,
  22. .footer {
  23. height: 60px;
  24. background-color: limegreen;
  25. }
  26. /* 页眉页脚的内容区 */
  27. .content {
  28. width: 960px;
  29. margin: auto;
  30. background-color: magenta;
  31. }
  32. .content ul li {
  33. float: left;
  34. line-height: 60px;
  35. padding: 0 25px;
  36. }
  37. /* 导航条鼠标悬停 */
  38. .content ul li:hover {
  39. background-color: mediumblue;
  40. }
  41. /* 页脚样式 */
  42. .content p {
  43. text-align: center;
  44. line-height: 60px;
  45. }
  46. /* 主体用定位 */
  47. .container {
  48. width: 960px;
  49. margin: auto;
  50. background-color: mediumslateblue;
  51. /* 最小高度为500px */
  52. min-height: 500px;
  53. /* 转为定位元素,做为定位父级 */
  54. position: relative;
  55. }
  56. .container > .left {
  57. width: 200px;
  58. background-color: olive;
  59. min-height: 500px;
  60. /* 绝对定位 */
  61. position: absolute;
  62. top: 0;
  63. left: 0;
  64. }
  65. .container > .right {
  66. width: 200px;
  67. background-color: olive;
  68. min-height: 500px;
  69. /* 绝对定位 */
  70. position: absolute;
  71. top: 0;
  72. right: 0;
  73. }
  74. .container > .main {
  75. background-color: orange;
  76. min-height: 500px;
  77. width: 560px;
  78. /* 绝对定位 */
  79. position: absolute;
  80. top: 0;
  81. left: 200px;
  82. }
  83. </style>
  84. </head>
  85. <body>
  86. <!-- 页眉 -->
  87. <div class="header">
  88. <div class="content">
  89. <ul>
  90. <li><a href="">首页</a></li>
  91. <li><a href="">618主会场</a></li>
  92. <li><a href="">在线客服</a></li>
  93. <li><a href="">618主会场</a></li>
  94. <li><a href="">在线客服</a></li>
  95. </ul>
  96. </div>
  97. </div>
  98. <!-- 主体 -->
  99. <div class="container">
  100. <div class="left"></div>
  101. <div class="main"></div>
  102. <div class="right"></div>
  103. </div>
  104. <!-- 页脚 -->
  105. <div class="footer">
  106. <div class="content">
  107. <p>大赤水网&copy; ICP备案号:000000000</p>
  108. </div>
  109. </div>
  110. </body>
  111. </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. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. li {
  15. list-style: none;
  16. }
  17. a {
  18. text-decoration: none;
  19. color: lightslategrey;
  20. }
  21. .header,
  22. .footer {
  23. height: 60px;
  24. background-color: limegreen;
  25. }
  26. /* 页眉页脚的内容区 */
  27. .content {
  28. width: 960px;
  29. margin: auto;
  30. background-color: magenta;
  31. }
  32. .content ul li {
  33. float: left;
  34. line-height: 60px;
  35. padding: 0 25px;
  36. }
  37. /* 导航条鼠标悬停 */
  38. .content ul li:hover {
  39. background-color: mediumblue;
  40. }
  41. /* 页脚样式 */
  42. .content p {
  43. text-align: center;
  44. line-height: 60px;
  45. }
  46. /* 主体用定位 */
  47. .container {
  48. width: 960px;
  49. margin: auto;
  50. background-color: mediumslateblue;
  51. /* 最小高度为500px */
  52. min-height: 500px;
  53. /* 防止浮动元素的高度塌陷 */
  54. overflow: hidden;
  55. }
  56. .container > .left {
  57. width: 200px;
  58. background-color: olive;
  59. min-height: 500px;
  60. /* 浮动 */
  61. float: left;
  62. }
  63. .container > .right {
  64. width: 200px;
  65. background-color: olive;
  66. min-height: 500px;
  67. /* 浮动*/
  68. float: left;
  69. }
  70. .container > .main {
  71. background-color: orange;
  72. min-height: 500px;
  73. width: 560px;
  74. /* 浮动*/
  75. float: left;
  76. }
  77. </style>
  78. </head>
  79. <body>
  80. <!-- 页眉 -->
  81. <div class="header">
  82. <div class="content">
  83. <ul>
  84. <li><a href="">首页</a></li>
  85. <li><a href="">618主会场</a></li>
  86. <li><a href="">在线客服</a></li>
  87. <li><a href="">618主会场</a></li>
  88. <li><a href="">在线客服</a></li>
  89. </ul>
  90. </div>
  91. </div>
  92. <!-- 主体 -->
  93. <div class="container">
  94. <div class="left"></div>
  95. <div class="main"></div>
  96. <div class="right"></div>
  97. </div>
  98. <!-- 页脚 -->
  99. <div class="footer">
  100. <div class="content">
  101. <p>大赤水网&copy; ICP备案号:000000000</p>
  102. </div>
  103. </div>
  104. </body>
  105. </html>

浮动不推荐使用。布局会出现不可预测的变化。

Correcting teacher:WJWJ

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