CSS 浮点逻辑

2023-12-20

我创建了 25 个随机宽度和高度的盒子,其中width == height(如图所示)

$(document).ready(function(e) {
  for (var count = 0; count < 5; count++) {
    for (var iter = 0; iter < 5; iter++) {
      $(".content").append("<div id='" + count + "_" + iter + "' class='box'><p>" + count + "_" + iter + "</p></div>");
      $(".content div:last").width(Math.round((Math.random() * 100) + 50));
      $(".content div:last").height($(".content div:last").width());
    }
  }
});
.box {
  background: #FF0004;
  margin: 10px;
  float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body>
  <div class="content">
  </div>
</body>

我试图更好地理解浮动属性逻辑以及浮动元素彼此“堆叠”时定位背后的推理。例如(从小提琴中截取的屏幕截图):

What makes 3_3 relocate to the position as shown below when the screen is made bigger? enter image description here

根据 W3Schools 的说法:

如果你一个接一个地放置几个浮动元素,如果有的话,它们会并排浮动。room.

所以问题是,什么是“room“ 是什么意思以及控制浮动元素位置的逻辑是什么?

这篇SO帖子的答案:CSS 浮动解释 https://stackoverflow.com/questions/7964806/css-float-explanation似乎相关,但它似乎无法解释为什么浮动元素停止在某个位置。


以下是链接答案中与您的问题最相关的部分:

当您浮动块元素时,您是在告诉浏览器将其放置在前一个浮动对象旁边,只要容器足够宽(否则它将下降到前一个对象下方)。

正如作者提到的,这是一个粗略的简化。第9.5.1节 http://www.w3.org/TR/CSS21/visuren.html#float-position该规范列出了所有精确规则,但我不会在这里引用整个内容,因为它是very阅读很长,只有某些要点与这里相关。当我逐步了解您的小提琴中发生的情况时,我将引用相关观点。

比较您的两个屏幕截图。注意位置已改变的两个框 3_2 和 3_3,以及它们周围的框 2_4、3_0 和 3_1。

Before

After

当屏幕变大时,您可以为 3_2 留出空间,使其从 2_4 旁边的原始位置向上移动到 3_1 旁边:

  1. 如果左浮动框的左侧有另一个左浮动框,则其右外边缘可能不会位于其包含块右边缘的右侧。 (宽松地:左浮动可能不会在右边缘伸出,除非它已经尽可能远离左侧。)类似的规则适用于右浮动元素。
  1. 浮动箱必须放置得尽可能高。
  1. 左浮动框必须尽可能放置在左侧,右浮动框必须尽可能放置在右侧。较高的位置优于较左/右的位置。

这反过来又为下一个浮动框留出空间,以尽可能占据顶部和左侧的空间,遵循与上面相同的规则。结果,3_3 浮起来,停在接近 3_2 的地方,then它沿水平轴尽可能向左浮动,在接近 2_4 时停止。请注意,尽管 3_3 看起来应该能够容纳在 2_4 和 3_2 之间,但事实并非如此,因为必须考虑边距(这就是上面“外边缘”的含义)。

此时,以下各项适用,此外上面的#8 和#9 项:

  1. 如果当前框是左浮动的,并且源文档中较早的元素生成了任何左浮动框,则对于每个此类较早的框,当前框的左外边缘必须位于右外边缘的右侧前一个盒子的外边缘,或者其顶部必须低于前一个盒子的底部。类似的规则也适用于右浮动框。
  1. 浮动框的外顶部不得高于源文档中较早的元素生成的任何块或浮动框的外顶部。

由于 3_3 太大,它会从第一行浮动框产生明显的向下突出。这有效地增加了第一行的高度。 3_3 之后的所有其他浮动元素必须保留在自己的行上,并且第二行浮动元素不得与 3_3 的底部边距边缘相交。这主要由第 5 条规定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS 浮点逻辑 的相关文章

  • 仅 IE9_有时_会忽略

    我们正在开发一个大量使用 这是典型的 TYPO3 网站 该网站是在子目录中开发的 稍后将被重新定位到顶级目录 因此我们无法轻易删除 我们的客户告诉我们 有时当她浏览新页面时 她得到的页面内容没有应用布局 我们对此进行了调试 仅在 IE9 中
  • 如何在数据表中colspan rowspan?

    I am trying to use colspan and rowspan attributes with jQuery Datatables where a product sku can span 2 rows and a week
  • jQuery:离线后 POST 出错(iOS 和 Chrome)

    我构建了一个具有离线功能的 HTML5 Web 应用程序 使用 AppCache 程序流程为 Online 在网络上时 应用程序预加载一些基本信息 工作 Offline 用户拿着装有应用程序的平板电脑offline 然后在应用程序上执行他们
  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • html 选择列表 - 通过传入变量获取文本值?

    我有一个显示列表语言的选择列表
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 暂停除了已激活的玩家之外的所有其他玩家。

    我有这个插件 它可以将不同的样式应用于 html5
  • 悬停此元素时隐藏元素后的伪元素

    我的菜单垂直放置在页面左侧和菜单之间 li 我有一个 after那是一个分隔符 我想要的是当我悬停元素本身 如果它是第一个元素 时隐藏 after 元素 或者当它是中间元素时隐藏上面和底部的元素 如果它是最后一个子元素 则隐藏 after前
  • 响应式图像 - srcset 和尺寸属性 - 如何正确使用两者:基于设备像素比和基于视口的选择一起?

    到目前为止 我经常读到这个问题 并且它也发生在我自己的项目中 这里介绍一下我到目前为止所发现的关于 srcset 和 size 属性的内容 关于如何使用有两种不同的可能性srcset 属性 来源 w3c http w3c github io
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 删除子元素上的 CSS 过滤器

    我的 CSS 代码有问题 正如您所看到的 我在 li 元素上有过滤器 但它覆盖了其他元素 我需要使其他两个元素没有过滤器 有没有可能这样做 main width 300px height 300px background color blu
  • 最大宽度调整以适应文本?

    不是最好的标题 但无论如何 我有一个元素max width和一些文字 如果文本长度超过一行所能容纳的长度 我会得到以下结果 My text here hello everyone 换句话说 它占据了完整的最大宽度 但由于单词向下移动 右侧有
  • 为 Angular2 中的组件加载多个样式表

    我正在构建一个 angular2 应用程序 当我尝试为同一组件加载多个样式表时 我面临多个问题 这是我正在做的代码 import Component from angular core Component selector my tag t
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • 使用 CSS 使一行 div 高度相同

    我有一排必须具有相同高度的 div 但我无法提前知道该高度可能是多少 内容来自外部源 我最初尝试将 div 放置在封闭的 div 中并将它们向左浮动 然后我将它们的高度设置为 100 但这没有明显的效果 通过将封闭 div 的高度设置为固定
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • CSS3 信封形状

    正如您可能已经猜到的 该图像是邮件信封形状的一部分 如果可能的话 我想使用 CSS3 创建该形状 我已经制作了其他部分 但这个很棘手 该形状需要两侧都有三角形切口和圆角 大概是 border radius bottom left borde
  • 表格行未扩展到全宽

    我有一个表格 当我将表格的宽度设置为 100 并将表格行的宽度设置为 100 时 没有任何反应或宽度发生变化 Table Normal position relative display block margin 10px auto pad

随机推荐

  • 在 Windows 上安装 GLo​​g

    我需要安装 GLo g 才能在 OpenCV 中使用 SFM 模块 我已经找到了源代码链接 https github com google glog但我真的不知道如何在我的系统上安装它 因为我没有太多的经验 还有一个 自述文件 window
  • NDB 查询返回零结果。数据存储显示结果

    我发现这个特殊的问题 运行查询 确认记录存在 返回计数为零 这是我的模型 class Description ndb Model description ndb TextProperty time posted ndb DateTimePr
  • 将 OpenCV 矩阵循环转换为 JavaCV

    不久前得到了 O Reilly 的 学习 OpenCV 一书 从那时起 我一直忙于将我看到的所有示例代码从 OpenCV 转换为 JavaCV 通常还会进行一些我自己的修改 一直以来 我都试图尽可能保持纯 OpenCV C 语言 代码并避免
  • 有没有安全的方法来管理 API 密钥?

    我正在使用一个API https www themoviedb org在我的应用程序中 我目前通过 java 界面管理 API 密钥 public interface APIContract The API KEY MUST NOT BE
  • 函数的 va_arg 参数存储在堆栈内存还是堆内存中?

    问题如题 变量参数列表是根据其使用情况存储在堆栈内存中 还是分配到堆中 更重要的是它们存储在哪里 为什么它们存储在 X 中 该标准没有提及实现 只提及 va arg 和相关 宏 的行为 它们甚至不必是宏 根据编译器的 正常 约定 变量参数可
  • Jenkins 在 Websphere 8.5 上运行导致插件类加载错误

    我正在运行 Jenkins 1 552 WebSphere 8 5 with Java 7 on RedHat Linux 我将 Artifactory 插件加载到 Jenkins 中 但是当我进行测试连接时 收到以下错误 org apac
  • MediaPlayer 无法准备?

    我编写了一个流媒体广播应用程序 其功能相当基本 但有些设备拒绝 准备 例如运行 2 2 的我的 Optimus One 我的应用程序在其他 2 2 设备上运行 我兄弟的 S2 运行 2 3 我的 Prime 运行 4 0 3 知道为什么我的
  • 如何抑制 Jasmine 中跳过的测试的输出

    如果我的场景包含 1000 多个测试 并且只想运行其中的选定部分 我可以使用fdescribe 其余的测试被跳过 这很好 但它们仍然污染控制台输出 如何抑制跳过测试的控制台输出 如果您通过 Karma 运行测试 则可以配置一个规范报告器插件
  • 如何在 pandas 中使用滚动?

    我正在研究下面的代码 Resample interpolate and inspect ozone data here data data resample D interpolate data info Create the rollin
  • Wix 如何隐藏功能选项(无子功能)

    有一个类似的问题 在自定义对话框中编辑上下文菜单 选择树 https stackoverflow com questions 12929930 edit context menu selectiontree in customize dia
  • 创建 NSString 后保留计数

    我正在通过以下方法创建一个 NSString 类型的对象 NSString str NSString alloc initWithString aaaaaaaaaaaaaaa NSLog retain count d str retainC
  • Rails 4+ 最佳实践:删除父级,同时保留子级

    我想保留子记录和层次结构 即使父记录被删除 我看到两个选择 保留现有的父级并利用 deleted at 字段来指示 父母本身不活跃 但关系仍然存在 这将导致许多实际上已失效的父记录被永久存储 嗯 将所有废弃的子记录分配给通用 收集器 僵尸父
  • Celery / RabbitMQ - 找出 No Acks - 未确认的消息

    我正在尝试找出如何获取有关未确认消息的信息 这些存储在哪里 在使用 celery 检查时 似乎一旦消息得到确认 它就会处理完毕 并且您可以跟踪状态 假设您有一个结果后端 那么您可以看到它的结果 但从你应用延迟的那一刻起 直到它被承认它处于黑
  • 匿名方法作为函数结果

    我想要做的是将作为函数结果获得的匿名方法分配给相同类型的变量 Delphi 抱怨无法完成任务 显然 Delphi 的事情我想分配 GetListener 函数而不是同一函数的结果 非常感谢对此的任何帮助 type TPropertyChan
  • 如何仅对筛选数据/可见单元格应用 vlookup 公式

    我已经过滤了 A 列 我需要对 A 列中的可见单元格应用 vlookup 公式 我如何在 vba 中实现这一目标 工作表中的总行数为 30 000 过滤后的行数接近 100 您无需 VBA 只需使用 Excel 数组公式即可解决此问题 但如
  • 用 R 进行向量思考

    我知道 R 处理向量的效率最高 应该避免循环 我很难自学以这种方式实际编写代码 我想要一些关于如何 矢量化 我的代码的想法 下面是为 10 000 个非唯一状态组合创建 10 年样本数据的示例 st 计划1 p1 和计划2 p2 st lt
  • 动画边距底部 Silverlight

    我目前正在处理动画 我有一个隐藏搜索面板的网格 单击搜索按钮会将网格向下移动以显示搜索选项 我让这部分工作的问题是网格视图占用了所有可用空间 因此当搜索栏隐藏时它看起来很好 但如果搜索栏可见 那么网格底部就会离开页面 我一直在尝试使用边距来
  • 403 禁止网络根目录中的符号链接

    我位于 LAMP 堆栈上的共享托管包上 没有 shell 访问权限 我可以使用 PHP 创建符号链接symlink 功能 假设我的网络根目录是 home www user1 public 假设我有一个名为的真实目录 home www use
  • 使用 CircleCI 进行 Selen 测试

    我正在使用 CircleCI 我想运行 Huxley 测试 但为此我需要运行硒服务器 我试图运行 selenium 服务器独立 jar 那不是解决方案 如果您知道的话请帮忙 大多数浏览器测试框架都会为您提供 Selenium 如果您需要运行
  • CSS 浮点逻辑

    我创建了 25 个随机宽度和高度的盒子 其中width height 如图所示 document ready function e for var count 0 count lt 5 count for var iter 0 iter l