Correction status:qualified
Teacher's comments:布局的前提, 你必须拥有该元素的控制权力
【css基础作业:浮动与三列布局】
1、实例演示如何消除子元素浮动造成父元素高度折叠的影响
<!DOCTYPE html> <html lang="en"> <head> <title>子元素对父元素的影响</title> <meta charset="utf-8"> <style type="text/css"> .box1{ width: 300px; border: 5px dashed red; overflow:hidden; /*scroll、auto*/ } .box2{ width: 300px; height: 300px; background-color: lightblue; float: left; } </style> </head> <body> <div class="box1"> <div class="box2"></div> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
总结:
浮动造成父元素高度折叠原因:浮动导致子元素和父元素不在同一平面内。
即:对于子元素而言,其脱离文档流,位于在一定空间高度处排列
对于父元素而言,其因为子元素脱离文档流(父元素尚且归属文档流中)其由于缺少子元素的支撑导致“肉眼”识别差的高度折叠。(浏览器无法识别子元素。高度中剔除子元素高度)
而对于子元素而言,由于其位于一定空间高度处排列
从而导致视觉效果时父元素高度折叠
处理:1、父元素设置成子元素高度2、父元素设置浮动 3、在浮动元素文档流后设置块元素,用于清除浮动4、父元素overflow:hidden;设置清除浮动
2、实例演示三列布局的实现原理( 绝对定位实现, 浮动定位实现)
绝对定位:
<!DOCTYPE html> <html> <head> <title>绝对定位实现三列布局</title> <meta charset="utf-8"> <style type="text/css"> .container{ width: 1000px; margin: 0 auto; background-color: black; } .header,.footer{ height: 60px; background-color: red; } .main{ margin: 5px auto; position: relative; } .left{ background-color: lightgreen; width: 200px; min-height: 800px; top: 0; left: 0; position: absolute; } .content{ background-color: lightyellow; min-height: 800px; margin-left:200px; margin-right: 200px; } .right{ background-color: lightgreen; width: 200px; min-height: 800px; top: 0; right: 0; position: absolute; } </style> </head> <body> <div class="container"> <div class="header">头部</div> <div class="main"> <div class="left">左侧</div> <div class="content">内容</div> <div class="right">右侧</div> </div> <div class="footer">底部</div> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
原理:
1、先计算出左右栏占据的宽度大小,并设置左右各自紧挨在main块中边界。
2、中间部分设置好左右编剧等于左右块宽度即可
通过计算三部分宽度将main块分成三块。
浮动定位:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>三列布局(浮动)</title> <style> .container { width: 1000px; margin: 0 auto; background-color: black; } .header, .footer { height: 60px; background-color: red; } .main { background-color: lightblue; margin: 5px auto; overflow: hidden; } .left { background-color: lightyellow; width: 200px; min-height: 800px; float: left; } .content { background-color: lightgreen; min-height: 800px; width: 600px; float: left; } .right { background-color: lightyellow; width: 200px; min-height: 800px; float: right; } </style> </head> <body> <div class="container"> <div class="header">头部</div> <div class="main"> <div class="left">左侧</div> <div class="content">内容</div> <div class="right">右侧</div> </div> <div class="footer">底部</div> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
原理:
浮动布局原理:
1、将left、content、right三块从原来文档流中抽离出来重新组合排列
2、设置left、content、right父级元素main中overflow:hidden避免浮动对其他子集产生影响
即通过浮动完成三列布局