为什么固定宽度元素不占用浮动元素旁边的空间?

2024-03-22

In this CodePen http://codepen.io/nitinsavant/pen/qrvwQd, the <aside>元素包裹着<article>元素。

但是如果你应用一个宽度<aside>元素(即取消注释width: 50px;), the <aside>跳到新的一行,即使有足够的空间可以坐在旁边<article>元素。

为什么该元素不与浮动元素并排放置<article>什么时候有空位?

section {
  width: 800px;
}

article {
  float: left;
  width: 500px;
  background: #ffffcc;
}

aside {
/*   width: 50px; */
  background: #ccffcc;
}
<body>
  <section>
    <article>[[Text]]</article>
    <aside>[[Text]]</aside>
  </section>
</body>

制作<article>半透明揭示了当宽度的情况下实际发生的情况<aside>是自动的:

section {
  width: 800px;
}

article {
  float: left;
  width: 500px;
  background: #ffffcc;
  opacity: 0.5;
}

aside {
/*   width: 50px; */
  background: #ccffcc;
}
<body>
  <section>
    <article>[[Text]]</article>
    <aside>[[Text]]</aside>
  </section>
</body>

没错:就是<aside>元素的框水平拉伸以填充<section>, 忽略浮动<article>共。这是text<aside>围绕着<article>,不是盒子。

所以通过给<aside>宽度远小于浮动的宽度<article>,事实上有no文本旁边的空间<article>!这会导致文本向下移动,因为文本总是更喜欢向下流动而不是水平溢出。这实际上会导致<aside>元素的盒子增加高度,当您再次制作<article>半透明:

section {
  width: 800px;
}

article {
  float: left;
  width: 500px;
  background: #ffffcc;
  opacity: 0.5;
}

aside {
  width: 50px;
  background: #ccffcc;
}
<body>
  <section>
    <article>[[Text]]</article>
    <aside>[[Text]]</aside>
  </section>
</body>

那么为什么不流入<aside>盒子本身会因浮动而变窄或向下移动?这只是因为浮动从流中取出了一个元素。这就是为什么最初的布局<aside>无视<article>共。

那么为什么文本会环绕浮动呢?因为浮动的全部要点是让文本环绕浮动对象 https://stackoverflow.com/questions/32848130/paragraphs-text-does-not-render-below-floated-image-but-paragraph-itself-does/32848166#32848166,就像拥有文本的意义在于人们阅读它一样。

一切我上面已经描述了规范第 9.5 节 https://www.w3.org/TR/CSS22/visuren.html#floats.

请注意,这仅适用于<aside>是一个流入块框,不建立块格式化上下文。如果你浮动<aside>显然它也会坐在旁边<article>,这样你就有了两个花车,两个花车自然会排成一排。

如果你申请overflow: hidden,导致<aside>建立块格式化上下文,然后does坐在旁边<article>,即使它不是浮动的(事实上,这可以防止文本完全围绕浮动):

section {
  width: 800px;
}

article {
  float: left;
  width: 500px;
  background: #ffffcc;
}

aside {
  width: 50px;
  background: #ccffcc;
  overflow: hidden;
}
<body>
  <section>
    <article>[[Text]]</article>
    <aside>[[Text]]</aside>
  </section>
</body>

虽然浮动本质上不会侵入其他块格式化上下文,但事实是overflow: hidden因为这是一个不直观的副作用,有一点history https://stackoverflow.com/questions/9943503/why-does-css2-1-define-overflow-values-other-than-visible-to-establish-a-new-b/11854515#11854515在它后面。

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

为什么固定宽度元素不占用浮动元素旁边的空间? 的相关文章

随机推荐

  • 从 Oracle 函数返回引用游标

    我收到错误 PLS 00382 表达式类型错误 我想将参考光标作为输出 请让我知道我该怎么做 create or replace function test cur return sys refcursor as var ref sys r
  • 在 R 中使用表情符号

    我有一个包含很多表情符号的 csv 文件 Person Message A A How are you B Alright A 我怎么能够read csv 进入 R 以便表情符号不会变黑 我想跟踪一段时间内表情符号的使用情况 我的控制台有一
  • 解释 Merkle 树在最终一致性中的使用

    默克尔树 http en wikipedia org wiki Hash tree在几个分布式 复制的键 值存储中用作反熵机制 Dynamo http www allthingsdistributed com files amazon dy
  • 如何在 RST/阅读文档的代码块中添加复制按钮

    我一直在编写个人 操作方法 指南 记录并保留我的学习日记 我现在有一个几乎太长的代码块 当我自己遇到这么长的代码时 试图仅突出显示该代码块而不突出显示整个页面 或者还不够 总是令人沮丧 所以 我的问题是 对于rst 重构文本 code bl
  • 如何将 PostGIS 添加到 PostgreSQL pgAdmin?

    我已经安装了 PostgreSQL 和 pgAdmin 但我想添加一个 PostGIS 服务器 以便我可以处理地理信息系统项目 我正在跟进本教程 http workshops boundlessgeo com postgis intro c
  • Windows 应用商店应用程序 UI 更新

    我正在为 Windows 8 编写一个 Windows Store App 玩具应用程序 它只有一个 xaml 页面 其中包含TextBlock 该页面的 MyTimer 类为DataContext this DataContext new
  • UITextView从底部开始

    我遇到了问题UI文本视图 我以前见过其他人也遇到过这个问题 但是每当我的应用程序在我的手机上加载时 所有UITextViews从文本的底部开始 我必须向上滚动 我已经尝试了多种解决方案 但我需要一个仅在情节提要上使用的解决方案 因为我有一些
  • dropzone.js 和 jquery 版本兼容性

    我最近在一些项目中使用 dropzone js 并配置选项没有问题 但在一个新项目中我使用的是由 Zend Framework 3 自动安装的最新版本的 jQuery 3 1 0 它似乎会导致一些问题与 dropzone js 版本 4 3
  • 如何在Tomcat(servlet容器)中监听套接字?

    我必须让网络应用程序监听套接字 服务器套接字 并处理套接字流 但该应用程序只是部署在 Tomcat 中 Tomcat 只是一个 servlet 容器 它没有 JCA 支持 并且在servlet线程中建立服务器套接字是不合理的 解决方案1 丑
  • ES6 中符号命名有约定吗?

    我正在摆弄 ES6 查看符号 与 Ruby 不同 例如你会写 symbol ES6符号似乎允许任何 标准 变量名 说实话 我觉得这很令人困惑 var privateProperty Symbol var obj obj privatePro
  • 我们应该在执行某些代码之前还是之后调用超类

    Android Studio 0 4 6 Hello 我这里有一个代码片段 我经常困惑 super 应该是第一行执行还是最后一行 通常 我将其作为第一次调用 以便可以在父类中设置默认属性 但是 我之前看过一些执行此操作的代码 我只是想知道这
  • Try Catch 无法与 PHP 中的 require_once 一起使用?

    我不能做这样的事吗 try require once includes functions php catch Exception e echo Message e gt getMessage echo Code e gt getCode
  • 如何在 Laravel 中使用 paginator::make() 在视图中显示结果集?

    我用过Paginator make对表中的记录进行分页 在视图中 我得到了分页链接 但每个链接都包含其中的所有记录 如何限制它perPage项目 datas Paginator make paginator count paginator
  • GCC中函数调用的参数求值顺序

    当我用谷歌搜索这个时 我总是得到关于评估顺序的线索 一般来说 评估顺序是未指定的 我知道参数评估顺序未指定C一般来说 我的问题是参数评估顺序gcc 从左到右还是从右到左 任何资源链接也将不胜感激 EDIT 消除问题中的歧义 嗯 我说的是当时
  • 使用配置文件添加 WSO2 IS Oauth / OpenId Connect 服务提供商

    我们目前在我们的环境中使用自动化流程 我们有 WSO2 5 3 0 我需要使用 XML 配置文件配置 Oauth2 Openid 服务提供程序 所有文档 示例等均面向 SAML2 而不是 Oauth2 OpenId 有人可以帮助我吗 目前您
  • 根据字符串长度过滤字符串数据

    我喜欢过滤掉字符串长度不等于10的数据 如果我尝试过滤掉其列的任何行A s or B的字符串长度不等于10 我尝试了这个 df pd read csv filex csv df A df A apply lambda x x if len
  • 如何在 Visual Studio 2017 Professional 中打开 ReactJS 项目

    我通过 create react app 和 yo office 命令创建了项目 https dev office com docs add ins excel excel add ins get started react https d
  • C++ 将ASII转义unicode字符串转换为utf8字符串

    我需要读取带有 unicode 转义的标准 ascii 样式字符串 并将其转换为包含 utf8 编码等效项的 std string 因此 例如 u03a0 具有 6 个字符的 std string 应转换为原始二进制文件中具有两个字符 分别
  • 将 Maven Java 编译器调试设置为 false 不会删除行号表?

    也许这是我缺乏理解 但我认为在 Maven Java 项目中执行此操作会禁用所有调试信息进入类文件
  • 为什么固定宽度元素不占用浮动元素旁边的空间?

    In this CodePen http codepen io nitinsavant pen qrvwQd the