Blogger Information
Blog 11
fans 0
comment 0
visits 8653
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
浮动元素高度坍塌原因及解决方案与三列布局
Haggi的糖果屋
Original
743 people have browsed it

一浮动

浮动基本特征

1.元素浮动之后从文档流中脱离出来(会释放它原来在文档流中占据的空间)
2.后面的元素会自动填充它出让出来的空间大小
3.浮动元素只会影响到它后面的元素布局,对前面没有影响
4.行内元素用于最终内容的载体, 不能充当容器/当父级,不能设置或设置了宽高也是无效的。例如a、p元素等
5.任何元素,一旦浮动都自动转为块级元素

高度坍塌及解决方案

高度坍塌:
父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度,从而导致父元素的高度塌陷
运行图:

解决方案:
1.给父元素也添加一个高度

CSS代码:

  1. .container {
  2. height: 150px;
  3. }

运行结果图:

2.把父元素也浮动起来
CSS代码:

  1. .container {
  2. float: left;
  3. }

运行结果图:

3.添加一个专用元素用于清浮动
CSS代码:

  1. .clear {
  2. width: 100px;
  3. height: 100px;
  4. background-color: brown;
  5. clear: both;

运行结果图:

4.通过添加一个伪元素来解决
CSS代码:

  1. .container::after {
  2. content: "伪元素";
  3. display: block;
  4. clear: both;

运行结果图:

5.块级格式化上下文
CSS代码:

  1. .container {
  2. overflow: scroll;
  3. /* 默认值:overflow: auto; */
  4. }

运行结果图:


二、三列布局

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. /* 固定块级元素宽高,避免边框、内边距增长而增长 */
  13. box-sizing: border-box;
  14. }
  15. li {
  16. list-style: none;
  17. }
  18. a {
  19. text-decoration: none;
  20. color: whitesmoke;
  21. }
  22. /* 页眉与页脚 */
  23. .header,
  24. .footer {
  25. height: 40px;
  26. width: 100%;
  27. background-color: black;
  28. color: whitesmoke;
  29. margin: auto;
  30. }
  31. /* 页眉与页脚的内容区 */
  32. .content {
  33. width: 100%;
  34. }
  35. .content ul li {
  36. float: left;
  37. line-height: 40px;
  38. padding: 0 15px;
  39. }
  40. .content ul li:hover {
  41. background-color: coral;
  42. }
  43. /* 页脚样式 */
  44. .content p {
  45. text-align: right;
  46. line-height: 40px;
  47. }
  48. /* 主体用定位 */
  49. .container {
  50. width: 960px;
  51. margin: 10px auto;
  52. /* background-color: #ccc; */
  53. min-height: 600px;
  54. /* 转为定位元素,做为定位父级 */
  55. position: relative;
  56. }
  57. .container > .left {
  58. width: 20%;
  59. background-color: gray;
  60. min-height: 600px;
  61. position: absolute;
  62. top: 0;
  63. left: 0;
  64. }
  65. .container > .right {
  66. width: 20%;
  67. background-color: red;
  68. min-height: 600px;
  69. position: absolute;
  70. top: 0;
  71. right: 0;
  72. }
  73. .container > .main {
  74. background-color: limegreen;
  75. min-height: 600px;
  76. width: 58%;
  77. position: absolute;
  78. top: 0;
  79. left: 21%;
  80. }
  81. </style>
  82. </head>
  83. <body>
  84. <!-- 页眉 -->
  85. <div class="header">
  86. <!-- 内容区: 水平居中 -->
  87. <div class="content">
  88. <ul>
  89. <li><a href="">导航栏</a></li>
  90. <li><a href="">模块一</a></li>
  91. <li><a href="">模块二</a></li>
  92. <li><a href="">模块三</a></li>
  93. <li><a href="">模块四</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>底部:欢迎来到PHP世界</p>
  108. </div>
  109. </div>
  110. </body>
  111. </html>

结果图:

2.浮动

部分css代码:

  1. .container {
  2. width: 100%;
  3. margin: 10px auto;
  4. /* background-color: #ccc; */
  5. min-height: 600px;
  6. /* 防止浮动元素的高度塌陷 */
  7. overflow: auto;
  8. }
  9. .container > .left {
  10. width: 20%;
  11. background-color: wheat;
  12. min-height: 600px;
  13. float: left;
  14. }
  15. .container > .right {
  16. width: 20%;
  17. background-color: wheat;
  18. min-height: 600px;
  19. float: right;
  20. }
  21. .container > .main {
  22. background-color: lightgreen;
  23. min-height: 600px;
  24. width: 58%;
  25. float: left;
  26. margin-left: 1%;
  27. }

结果图

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