Correction status:qualified
Teacher's comments:总结的真, 最后二句话, 不做个三年前端, 体会不出来的
一、实例演示如何消除子元素浮动造成父元素高度折叠的影
a、有何影响
<style> .box1{ width:100px; border:3px solid red; background-color:lightblue; } .box2{ width:inherit; height:200px; background-color:lightseagreen; } .box2{ float:left; } </style> <body> <div class="box1"> <div class="box2"></div> </div> </body>
点击 "运行实例" 按钮查看在线实例
影响:在父元素没有设置高度子元素也没有浮动时,子元素的高度会撑开父元素,使父元素与子元素高度相同,当子元素浮动后,子元素脱离了文档流,父元素高度没有了,无法包住子元素。
小 结:
当有块级元素嵌套,子元素浮动时,会造成父元素的高度无法自适应的包住子元素的高度,虽然可以采用设置父元素与子元素相同高度,或是父元素同子元素一起浮动,增加一个dom元素来清除等来消除,但都比较麻烦,如果子元素高度发生变化,又要调整父元素的高度,在父元素中增加overflow:hidden来清除浮动可以让父元素自适应子元素的高度,比较方便。
二、实例演示三列布局的实现原理
a、绝对定位
.container { width: 1000px; margin: 0 auto; } /*头部与底部共用样式*/ .header, .footer { height: 60px; background-color: lightgrey; } /* 主体区与头部底部间隔5px */ .main { margin: 5px auto; } /* 左边栏宽度,在没有内容时的最小高度及前景色 */ .left { width: 150px; min-height: 800px; background-color: lightseagreen; } /* 内容区没有内容时的最小高度及前景色 */ .content { min-height: 800px; background-color: lightsalmon; } /* 右边栏宽度,最小高度及前景色 */ .right { width: 150px; min-height: 800px; background-color: lightgreen; } /* 定义父级为相对定位 */ .main { position: relative; } .left { position: absolute; left: 0px; top: 0px; } .right { position: absolute; right: 0px; top: 0px; } .content { margin-left:0px 160px; }
点击 "运行实例" 按钮查看在线实例
小结:在本例中着重注意,子元素在绝对定位时,是根据父级元素的位置定们,所以要定位子元素,首先要定位好父级元素。
b、三列布局(浮动方式实现)
<style> .container { width: 1000px; margin: 0 auto; } /*头部与底部共用样式*/ .header, .footer { height: 60px; background-color: lightgrey; } /* 主体区与头部底部间隔5px */ .main { margin: 5px auto; } /* 左边栏宽度,在没有内容时的最小高度及前景色 */ .left { width: 150px; min-height: 800px; background-color: lightseagreen; } .right { width: 150px; min-height: 800px; background-color: lightgreen; } /* 内容区没有内容时的最小高度及前景色 */ .content { min-height: 800px; background-color: lightsalmon; } .left { float: left; } .right { float: right; } </style> </head> <body> <div class="container"> <div class="header">头部</div> <div class="main"> <div class="content">内容区 <div class="left">左边栏</div> <div class="right">右边栏</div> </div> </div> <div class="footer">底部</div> </div> </body> </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>
点击 "运行实例" 按钮查看在线实例
小结:当几个元素一起浮动,浮动后的位置与它们浮动前的位置有关系
总结:在实际使用中,尽量使用定位,在定位无法达成效果时,才考虑用浮动。(切记:冲动是魔鬼,浮动也是魔鬼。)