博客列表 >浮动元素高度塌陷原因和解决方案及定位和浮动技术完成三列布局

浮动元素高度塌陷原因和解决方案及定位和浮动技术完成三列布局

知行合一
知行合一原创
2020年06月27日 15:46:501008浏览

浮动元素高度塌陷原因

我们经常会遇到一种情况,给一个元素设置浮动之后 float:left/right;如果父元素有一个边框,那么浮动元素无法将边框撑开。 如下图所示:


原因是因为元素浮动后,就脱离了文档流。那么它之前存在在父元素内的高度就随着浮动不复存在了,而此时父元素会默认自己里面没有任何内容。

浮动元素高度塌陷解决方法

1.给父元素设置高度

height:50px;

2.父元素设置浮动

.container{clear:both}

3.添加一个专用元素清除浮动

.clear{clear:both}

4.添加一个伪元素解决

  1. .clearfix::after{
  2. content:"";
  3. display:block;
  4. clear:both;
  5. }

5.最简单的解决方案。 块级格式化上下文。BFC

  1. .container {
  2. overflow: hidden;
  3. /*或 overflow: auto;*/
  4. }

定位实现三列布局

  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. li {
  14. list-style: none;
  15. }
  16. .header,
  17. .footer {
  18. height: 40px;
  19. background-color: lightblue;
  20. }
  21. .content {
  22. width: 1200px;
  23. margin: 0 auto;
  24. line-height: 40px;
  25. }
  26. .content p {
  27. text-align: center;
  28. }
  29. .content ul li {
  30. float: left;
  31. line-height: 40px;
  32. padding: 0 20px;
  33. ;
  34. }
  35. .content ul li:hover {
  36. background-color: lightseagreen;
  37. }
  38. /*主体用绝对定位来做*/
  39. .container {
  40. width: 1200px;
  41. margin: 10px auto;
  42. background-color: mediumseagreen;
  43. min-height: 600px;
  44. position: relative;
  45. }
  46. .container>.left {
  47. width: 200px;
  48. min-height: 600px;
  49. background-color: mediumslateblue;
  50. position: absolute;
  51. top: 0;
  52. left: 0;
  53. }
  54. .container>.right {
  55. width: 200px;
  56. min-height: 600px;
  57. background-color: mediumslateblue;
  58. position: absolute;
  59. top: 0;
  60. right: 0;
  61. }
  62. .container>.main {
  63. background-color: orangered;
  64. min-height: 600px;
  65. width: 800px;
  66. position: absolute;
  67. top: 0;
  68. left: 200px;
  69. }
  70. </style>
  71. </head>
  72. <body>
  73. <div class="header">
  74. <div class="content">
  75. <ul>
  76. <li><a>首页</a></li>
  77. <li><a>公司简介</a></li>
  78. <li><a>联系我们</a></li>
  79. </ul>
  80. </div>
  81. </div>
  82. <div class="container">
  83. <div class="left">左侧</div>
  84. <div class="main">中间</div>
  85. <div class="right">右侧</div>
  86. </div>
  87. <div class="footer">
  88. <div class="content">
  89. <p>xxx版权所有</p>
  90. </p>
  91. </div>
  92. </div>
  93. </body>
  94. </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. li {
  14. list-style: none;
  15. }
  16. .header,
  17. .footer {
  18. height: 40px;
  19. background-color: lightblue;
  20. }
  21. .content {
  22. width: 1000px;
  23. margin: 0 auto;
  24. line-height: 40px;
  25. }
  26. .content p {
  27. text-align: center;
  28. }
  29. .content ul li {
  30. float: left;
  31. line-height: 40px;
  32. padding: 0 20px;
  33. ;
  34. }
  35. .content ul li:hover {
  36. background-color: lightseagreen;
  37. }
  38. /*主体用绝对定位来做*/
  39. .container {
  40. width: 1000px;
  41. margin: 10px auto;
  42. background-color: mediumseagreen;
  43. min-height: 600px;
  44. overflow: hidden;
  45. }
  46. .container>.left {
  47. width: 200px;
  48. min-height: 600px;
  49. background-color: mediumslateblue;
  50. float: left;
  51. }
  52. .container>.right {
  53. width: 200px;
  54. min-height: 600px;
  55. background-color: mediumslateblue;
  56. float: right;
  57. }
  58. .container>.main {
  59. background-color: orangered;
  60. min-height: 600px;
  61. width: 560px;
  62. margin-left: 20px;
  63. margin-right: 20px;
  64. float: left;
  65. }
  66. </style>
  67. </head>
  68. <body>
  69. <div class="header">
  70. <div class="content">
  71. <ul>
  72. <li><a>首页</a></li>
  73. <li><a>公司简介</a></li>
  74. <li><a>联系我们</a></li>
  75. </ul>
  76. </div>
  77. </div>
  78. <div class="container">
  79. <div class="left">左侧</div>
  80. <div class="main">中间</div>
  81. <div class="right">右侧</div>
  82. </div>
  83. <div class="footer">
  84. <div class="content">
  85. <p>xxx版权所有</p>
  86. </p>
  87. </div>
  88. </div>
  89. </body>
  90. </html>

总结

  • 解决浮动元素高度塌陷,用第5种方法,更方便。
  • 三列布局的实现方法有很多,定位和浮动是基础的,还有Flex布局,网格布局等。以后掌握了再纪录!
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议