Blogger Information
Blog 8
fans 0
comment 0
visits 6185
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
浮动元素高度坍塌产生的原因与解决方案
多喝水
Original
678 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. </head>
  8. <style>
  9. .box{
  10. width: 200px;
  11. height: 200px;
  12. }
  13. .box1{
  14. background-color: lightblue;
  15. }
  16. .box2{
  17. background-color: lightcoral;
  18. float: left;
  19. }
  20. .box3{
  21. background-color: lightgreen;
  22. width: 230px;
  23. height: 230px;
  24. }
  25. a,span{
  26. background-color: yellow;
  27. width: 200px;
  28. height: 50px;
  29. float: left;
  30. }
  31. </style>
  32. <body>
  33. <div class="box box1">box1</div>
  34. <div class="box box2">box2</div>
  35. <div class="box box3">box3</div>
  36. <hr/>
  37. <a href="">php.cn</a>
  38. <span>PHP中文网欢迎</span>
  39. </body>
  40. </body>
  41. </html>

知识点:
1.box2浮动之后从文档流中脱离出来(意思就是会释放它原来在文档流中占据的空间)
2.浮动元素浮动之后,它后面的元素会自动填充它让出来空间的大小
3.浮动元素只会影响它后面的元素布局,对前面没有影响
4.行内元素用于最终内容的载体,不能充当容器/父级,不能设置宽高也是无效的
5.任何元素,一旦浮动都自动转为块级元素
6.不让它收到前面的浮动元素影响:clear:both
浮动元素只能水平方向浮动
浮动元素的浮动边界仅限于内容区

二、浮动元素的塌陷与解决方案

浮动塌陷和解决方法:

解决方案1:给父元素添加一个高度,但是此方法无法自适应.
解决方案2:把父元素浮动起来 ,会产生传导效应,级数越多很麻烦.
解决方案3: 添加一个专用元素用于清浮动 ,但依赖DOM结构
解决方案4: 添加一个伪元素来解决,也可以
解决方案5: 最简单的解决方案,加overflow属性(hidden/auto)

三、经典3列布局示例

1.使用定位完成一个三列经典布局


代码如下:

  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: #666;
  20. }
  21. /* 页眉与页脚 */
  22. .header,
  23. .footer {
  24. height: 40px;
  25. background-color: lightsteelblue;
  26. }
  27. .content {
  28. width: 960px;
  29. margin: auto;
  30. }
  31. .content ul li {
  32. float: left;
  33. line-height: 40px;
  34. padding: 0 15px;
  35. }
  36. .content ul li:hover {
  37. background-color: lightcoral;
  38. }
  39. /* 页脚 */
  40. .content p {
  41. text-align: center;
  42. line-height: 40px;
  43. }
  44. /* 主体用定位来做 */
  45. .container {
  46. width: 960px;
  47. margin: 10px auto;
  48. min-height: 600px;
  49. /* 定位做的,转为定位元素,父级 */
  50. position: relative;
  51. }
  52. .container > .left {
  53. width: 200px;
  54. background-color: navajowhite;
  55. min-height: 600px;
  56. position: absolute;
  57. top: 0;
  58. left: 0;
  59. }
  60. .container > .right {
  61. width: 200px;
  62. background-color: navajowhite;
  63. min-height: 600px;
  64. position: absolute;
  65. top: 0;
  66. right: 0;
  67. }
  68. .container > .main {
  69. background-color: lightgreen;
  70. min-height: 600px;
  71. width: 540px;
  72. position: absolute;
  73. top: 0;
  74. left: 210px;
  75. }
  76. </style>
  77. </head>
  78. <body>
  79. <!-- 页眉 -->
  80. <div class="header">
  81. <div class="content">
  82. <ul>
  83. <li><a href="">首页</a></li>
  84. <li><a href="">会场</a></li>
  85. <li><a href="">售后</a></li>
  86. </ul>
  87. </div>
  88. </div>
  89. <!-- 主体 -->
  90. <div class="container">
  91. <div class="left">左边</div>
  92. <div class="main">中间</div>
  93. <div class="right">右边</div>
  94. </div>
  95. <!-- 页脚 -->
  96. <div class="footer">
  97. <div class="content">
  98. <p>教育科技有限公司&copy; | 闵备案号:*******</p>
  99. </div>
  100. </div>
  101. </body>
  102. </html>

2.使用浮动完成一个三列经典布局,防止浮动元素塌陷用overflow: hidden

  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: #666;
  20. }
  21. /* 页眉与页脚 */
  22. .header,
  23. .footer {
  24. height: 40px;
  25. background-color: lightsteelblue;
  26. }
  27. .content {
  28. width: 960px;
  29. margin: auto;
  30. }
  31. .content ul li {
  32. float: left;
  33. line-height: 40px;
  34. padding: 0 15px;
  35. }
  36. .content ul li:hover {
  37. background-color: limegreen;
  38. }
  39. /* 页脚 */
  40. .content p {
  41. text-align: center;
  42. line-height: 40px;
  43. }
  44. /* 主体用定位来做 */
  45. .container {
  46. width: 960px;
  47. margin: 10px auto;
  48. min-height: 600px;
  49. /* 防止浮动元素塌陷 */
  50. overflow: hidden;
  51. }
  52. .container > .left {
  53. width: 200px;
  54. background-color: navajowhite;
  55. min-height: 600px;
  56. float: left;
  57. }
  58. .container > .right {
  59. width: 200px;
  60. background-color: navajowhite;
  61. min-height: 600px;
  62. float: right;
  63. }
  64. .container > .main {
  65. background-color: plum;
  66. min-height: 600px;
  67. width: 540px;
  68. float: left;
  69. margin-left: 10px;
  70. }
  71. </style>
  72. </head>
  73. <body>
  74. <!-- 页眉 -->
  75. <div class="header">
  76. <div class="content">
  77. <ul>
  78. <li><a href="">首页</a></li>
  79. <li><a href="">会场</a></li>
  80. <li><a href="">售后</a></li>
  81. </ul>
  82. </div>
  83. </div>
  84. <!-- 主体 -->
  85. <div class="container">
  86. <div class="left"></div>
  87. <div class="main"></div>
  88. <div class="right"></div>
  89. </div>
  90. <!-- 页脚 -->
  91. <div class="footer">
  92. <div class="content">
  93. <p>教育科技有限公司&copy; | 闵备案号:*******</p>
  94. </div>
  95. </div>
  96. </body>
  97. </html>

总结

通过学习,对浮动产生的影响有了更深的理解,新的知识点overflow: hidden,掌握定位的使用

Correcting teacher:GuanhuiGuanhui

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