博主信息
博文 21
粉丝 0
评论 1
访问量 24365
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
06-18作业 浮动元素高度导致塌陷的原因及解决方法!并且实现一个三列经典布局;
XFY_肆意De...
原创
864人浏览过
浮动问题导致的塌陷问题…
  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>Document</title>
  7. </head>
  8. <style>
  9. .container {
  10. border: 3px red solid;
  11. }
  12. .item {
  13. width: 200px;
  14. height: 200px;
  15. border: 1px solid #333;
  16. }
  17. </style>
  18. <body>
  19. <div class="container">
  20. <div class="item">1</div>
  21. <div class="item">2</div>
  22. <div class="item">3</div>
  23. </div>
  24. </body>
  25. </html>

当我人为的设置了item的浮动之后就会发现容器container的外边框没有包裹住里面的item的所有的DIV了,如图所示;


如何解决这个问题呢?
以下列举几种方法:
一、解决方法一:
给父元素container也添加一个高度.但当子元素随着内容变化的时候,父元素也需要跟着修改参数;PASS不推荐
二、解决方法二:
.给父元素container也添加一个float浮动,,可行,?但是如果父元素上还有元素的话,那就全部需要添加,也不推荐
三、解决方法三:
在container下添加一个空元素利用清除浮动来解决<div style="clear:both"></div>,这样会造成代码的冗余,不利益后期维护。
四、解决方法四:
在不给页面添加原生HTML代码的情况下利用伪元素来处理!

  1. <style>
  2. .container::after{
  3. ......
  4. clear:both;
  5. }
  6. </style>

五、解决方法五:
最简单的方法,直接利用voerflow: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>Document</title>
  7. </head>
  8. <style>
  9. /* 清除所有元素的内外边距*/
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. border-sizing:border;
  14. }
  15. /* 父盒子 */
  16. .box {
  17. background-color: #ccc;
  18. width: 100%;
  19. min-height: 300px;
  20. overflow: hidden; /* 清除浮动*/
  21. }
  22. /* 左盒子 */
  23. .box_left {
  24. width: 160px;
  25. height: 300px;
  26. background-color:lightseagreen;
  27. float: left;
  28. }
  29. /* 右盒子 */
  30. .box_right {
  31. width: 160px;
  32. height: 300px;
  33. background-color:lightsalmon;
  34. float: right;
  35. }
  36. /* 中盒子-自适应*/
  37. .box_main {
  38. border:1px red solid;
  39. height: 300px;
  40. width:100%;
  41. background-color:lemonchiffon;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <div class="box">
  47. <div class="box_left"></div>
  48. <div class="box_right"></div>
  49. <div class="box_main"></div>
  50. </div>
  51. </body>
  52. </html>

定位实现三列布局:
  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="zh-cn" />
  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. /* 父盒子 */
  14. .box {
  15. background-color: #ccc;
  16. width: 100%;
  17. min-height: 600px;
  18. position: relative;
  19. }
  20. /* 左盒子 */
  21. .box_left {
  22. width: 160px;
  23. height: 600px;
  24. background-color: lightseagreen;
  25. position: absolute;
  26. top:0;
  27. left: 0;
  28. }
  29. /* 右盒子 */
  30. .box_right {
  31. width: 160px;
  32. height: 600px;
  33. background-color: lightsalmon;
  34. position: absolute;
  35. top: 0;
  36. right: 0;
  37. }
  38. /* 中盒子-自适应*/
  39. .box_main {
  40. height: 600px;
  41. background-color: lemonchiffon;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <div class="box">
  47. <div class="box_left"></div>
  48. <div class="box_right"></div>
  49. <div class="box_main">中(自适应窗口)</div>
  50. </div>
  51. </body>
  52. </html>


总结:
根据以上二个实战,如果自己采用浮动的布局方式,就要考虑全局的页面调整,用到clear:both去清除多余的浮动;
如果用定位的方式去布局的话,个人感觉,更加简单!

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:前端布局的趋势就是去浮动化, 能不用就不用
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学