关于浮动两个元素重叠问题

问题描述

两个DIV,DIV1向左浮动,DIV2不浮动,效果为:DIV2浮动到了DIV1的位置,并且被DIV1覆盖,DIV2的文字被挤出去了

自己尝试过哪些方法

在DIV2中清除浮动可以解决这个问题,但是不太理解为什么不是一个元素也不是一行,为什么会重叠在一起。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
  div{
  width: 100px;
  height: 100px;
}
#div1{
  background-color:red;
  float:left;
}
#div2{
  background-color:yellow; 
 /* clear: both; */
}
  </style>
</head>
<body>
  <div id="div1">
    I AM DIV ONE
  </div>
  <div id="div2">
    I AM DIV TWO
  </div>
</body>
</html>

你期待的结果是什么?

希望可以理解为什么会出现这个情况,感谢!

阅读 8k
4 个回答
  1. div2被div1覆盖是因为div1使用了float,position脱离了正常的文档流,相当于不占据文档位置了,所以div2补上去了。

2.div2的文字被挤出去了是因为float其实没有完全脱离文档流,这是因为浮动的块虽然脱离的正常的文档流,但是还会占有正常文档流的文本空间 导致div2的文字内容被挤出。

浮动使元素脱离了文档流,你给div2元素加一个margin-left:100px;就行了

float 原本用于类似word中文字图片环绕,记住这一点就行了

可以理解为浮动的块部分脱离了文档流~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏