【发布时间】:2014-08-24 13:07:38
【问题描述】:
我最近开始学习css,在学习float的时候遇到了一些问题。
来自https://developer.mozilla.org/en-US/docs/Web/CSS/float:
float CSS 属性指定一个元素应该从正常流中取出并>放置在其容器的左侧或右侧,文本和内联元素将>环绕它。
但我只是想知道,如果 div 跟随浮动元素怎么办?所以我写了一个测试,它没有环绕它,它与它重叠,我真的很困惑,因为有人告诉我浮动元素不会从正常的文档流中取出,下一个 div 会向左对齐如果有足够的空间。
这是html和css,注意右边的div不是浮动的,如果是浮动的,它会表现出我的预期,但这不是我的问题。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Float Layout</title>
<style type="text/css">
#wrap {
background: #00c;
margin: 0 auto;
width: 960px
}
#header {
background: #FF3300;
width: 100%;
}
#mainbody {
background: #0CF;
width: 100%;
overflow: hidden;
}
#footer {
background: #639;
width: 100%;
}
.left {
width: 140px;
height: 200px;
background: #1f0;
float: left;
}
.right {
width: 140px;
height: 500px;
background: green;
}
</style>
</head>
<body>
<div id="wrap">
<div id="header">header</div>
<div id="mainbody">
<div class="left"><h1>Left</h1></div>
<div class="right"><h1>Right</h1></div>
</div>
<div id="footer">footer</div>
</div>
</body>
</html>
我没有足够的声誉来发布图片。输出是右 div 被左 div 重叠,如果我用段落或 h1 替换右 div,它将环绕左 div 这是预期的行为。
我只是想知道为什么右 div 与作为浮动元素的左 div 重叠?我无法解释浏览器如何处理这个问题。如果浮动元素取自正常的文档流,它可以解释这种行为,但这是事实。所以我对此一无所知。
【问题讨论】:
-
JSFiddle 上面的代码。