清除浮动(塌陷问题最终解决方案)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .box1{ width: 100px; height: 100px; background-color: #BBFFAA; /*设置浮动*/ float: left; } .box2{ width: 200px; height: 200px; background-color: yellowgreen; /* 由于受到box1浮动影响,box2整体向上移动100px 有时希望清除掉其他元素浮动对当前元素产生影响 可以使用clear达到效果 clear可以用来清除其他浮动元素对当前元素的影响 可选值: none 默认值,不清除浮动 left 清除左侧浮动元素对当前元素的影响 right 清除右侧浮动元素对当前元素的影响 both 清除两侧浮动元素对当前元素影响 清除对他影响最大元素的浮动 */ /* 清除box1浮动对box2的影响 清除浮动以后元素会回到其他元素浮动前位置 */ float: right; } .box3{ width: 300px; height: 300px; background-color: skyblue; clear: both; } </style> </head> <body> <div class="box1"></div> <div class="box2"></div> <div class="box3"></div> </body> </html>
清除浮动使用clear来清除其他浮动元素对当前元素的影响
可选值: none 默认值,不清楚浮动
left 清除左侧浮动
right 清除右侧浮动
both 清除两侧浮动(就是清除对该元素影响最大元素的浮动)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .box1{ border: 1px solid red; } .box2{ width: 100px; height: 100px; background-color: #BBFFAA; float: left; } /* 解决高度塌陷方案二 可以直接在高度塌陷父元素的最后添加一个空白div 由于这个div没有浮动,所以是可以撑开父元素的高度 再对其清除浮动,可以通过这个空白div撑开父元素的高度 基本没有副作用 使用该方式虽可以解决问题,但会在页面中添加多余结构 */ .box3{ clear: both; } </style> </head> <body> <div class="box1"> <div class="box2"></div> <div class="box3"></div> </div> </body> </html>
解决高度塌陷方案二
直接咋高度塌陷父元素最后添加一个空白div,由于div没有浮动,可以撑开父元素的高度,再对齐清除浮动
使用该方式可以解决问题,但是会在页面中添加多余结构
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .box1{ border: 1px solid red; } .box2{ width: 100px; height: 100px; background-color: #BBFFAA; float: left; } /*通过after伪类,选中box1的后边*/ /* 可以通过after伪类向元素最后添加空白块元素,对齐清除浮动 和添加一个div原理一样,可以达到相同效果 不会在页面中添加多余div,几乎没有副作用 */ .clearfix::after{ /*添加内容*/ content: ; /*转换块元素*/ display: block; /*清除浮动*/ clear: both; } /* 在IE6中不支持after伪类 所以在IE6中还需要使用hasLayout来处理 */ .clearfix{ zoom: 1; } </style> </head> <body> <div class="box1 clearfix"> <div class="box2"></div> </div> </body> </html>

浙公网安备 33010602011771号