html - 使用 float : left 的意外行为

标签 html css css-float

<div style="float: left; width: 400px; height: 400px; background-color: green;"></div>
<div style="width: 400px; height: 400px; background-color: yellow;">Hello World!</div>
<div style="width: 400px; height: 400px; background-color: blue;"></div>

在上面的例子中,有几点我没看懂:

  1. 为什么绿色 div 堆叠在黄色 div 之上?
  2. 为什么文本 "Hello World" 打印在蓝色 div 所在的位置,而不是黄色 div 所在的位置?

我理解 float: left; 将该元素推到左侧,并让所有以下元素呈现,就好像什么都没发生一样,同时仍然确认 float 元素占用的空间。

所以我预计会这样:

  1. 绿色 div 右侧的黄色 div。
  2. 蓝色 div 位于绿色 div 的正下方。
  3. 文本 “Hello World” 打印在黄色 div 上。

最佳答案

只有内容环绕 float 元素,其他(非内联)元素不会...

作为你的黄色<div>是一个 block 元素,它不会“环绕”你的 float 元素。

添加display: inline-block;到你的黄色元素,如下所示:

<div style="float: left; width: 400px; height: 400px; background-color: green;"></div>
<div style="display: inline-block; width: 400px; height: 400px; background-color: yellow;">Hello World!</div>
<div style="width: 400px; height: 400px; background-color: blue;"></div>

关于html - 使用 float : left 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44867197/

相关文章:

css - float :left prevents click on <a href> tag

html - 如何从面板 Bootstrap 中取消投影效果?

php - 如何在 php 表单中配置提交按钮,以便一次只发布一个数据?

CSS 通用同级选择器与标题

css - 如何同时转换多个元素的属性

css - 内容不正确 float

javascript - 如何测试 transitionProperty(等)是否采用 vendor 前缀样式属性名称或规范化属性名称?

javascript - 输入新字符后获取 contentEditable div 高度

html - 为什么 CSS 预加载不起作用或根本不应用样式?

html - 考虑 float 元素的填充