代码:
效果:
问题:
内容3的div发生左浮动,内容3的div和内容4的div的位置现在是一样的,但是为什么内容4的div里面的字“内容4”还在下面,不往上走?
这里面有文档流和文本流两个概念。
文档流是相对于盒子模型讲的,文本流是相对于文字段落讲的。
元素浮动之后,会让它跳出文档流,也就是说当它后面还有元素时,其他元素会无视它所占据了的区域,直接在它身下布局。但是文字却会认同浮动元素所占据的区域,围绕它布局,也就是没有拖出文本流。
但是绝对定位(position:absolute;)后,不仅元素盒子会拖出文档流,文字也会出文本流。那么后面元素的文本就不会在认同它的区域位置,会直接在它后面布局,不会在环绕。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{padding:0;margin: 0;}
.box{border: 2px solid blue;}
div div{border: 2px solid red;width: 100px;height: 100px;}
.float{float:left;position: absolute;}
</style>
</head>
<body>
<div class="box">
<div>内容1</div>
<div>内容2</div>
<div class="float">内容3</div>
<div>内容4</div>
</div>
</body>
文字环绕效果,文字不包含在div块标签中,包含在p行标签中,因此会产生折行包围的样式。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{padding:0;margin: 0;}
.box{border: 2px solid blue;width:300px;}
div div{border: 2px solid red;width: 50px;height: 50px;}
.float{float:left;}
</style>
</head>
<body>
<div class="box">
<div>内容1</div>
<div class="float">内容2</div>
<p>内容3内容3内容3内容3内容3内容3内容3
内容3内容3内容3内容3内容3内容3内容3
内容3内容3内容3内容3内容3内容3内容3
内容3内容3内容3内容3内容3内容3内容3
内容3内容3内容3内容3内容3内容3内容3</p>
</div>
</body>
</html>
5 回答2.2k 阅读
3 回答2.6k 阅读
3 回答2.3k 阅读
2 回答1.2k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答987 阅读✓ 已解决
4 回答1.1k 阅读
正如楼主所说:
div浮动也是要占位置的,这两个div的宽高还一样,所以内容3的div把内容4div的内容给挤下来了,如果把浮动元素float内容3的div宽度改小点,比如50px,内容4就可以上去了。如: