代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>清除浮动与浮动</title>
<style type="text/css">
*{
padding: 0px;
margin: 0px;
}
.test1, .test2, .test3{
width: 100px;
height: 100px;
background: red;
border: 1px solid #000;
}
.test2{
background: green;
}
.test1{
float: left;
/*position: absolute;*/
}
</style>
</head>
<body>
<div class="test1"></div>
<div class="test2">222</div>
<div class="test3"></div>
</body>
</html>
产生效果:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
.test2 的 overflow 默认为 visible,导致两个结果:
1.没有创建 BFC,故其外边缘紧贴父盒左侧,内部的行盒会因 .test1 的浮动而缩小,由于 .test1 所占空间等于 .test2 行盒最大宽度(俩的宽度设定是一样的),故整个 .test2 内部的行盒空间都被挤占了,所以看不到其绿色背景,同时文本溢出
2.溢出的内容可见,故其溢出的文本叠在了 .test3 上面
当设为 overflow: hidden 时,触发 BFC,.test2 就不会紧贴在其父盒左侧,而是去占浮动之外的空间,这时候就出现在了 .test1 的旁边。