非常简单的 html 的意外边距

2023-12-03

我有一个非常简单的html。红色 div 位于蓝色 div 内部,并且上边距为 10 像素。在非 ie 浏览器上,蓝色框距离视口顶部 10 px,红色 div 位于蓝色 div 的最顶部。我期望的是 ie 行为:红色 div 必须距蓝色 div 顶部 10 px。为什么非ie浏览器会这样渲染? (我认为错误的行为是 IE 的行为,但为什么呢?)

并且,执行此操作的正确方法是什么?

为什么空白? http://img92.imageshack.us/img92/7662/blankmr7.jpg

<html>
<head>
<style>
body { margin:0; padding:0; }
.outer
{
    background-color: #00f;
    height: 50px;    
}
.inner
{
    height: 20px;
    width: 20px;
    background-color: #f00;
    margin: 10px 0 0 10px;
}
</style>
</head>
<body>
<div class="outer">
    <div class="inner">
    </div>
</div>
</body>
</html>

尽可能斯特拉格的回答已经解释了你需要知道的为什么会发生——也就是说,它的发生方式是在 IE 以外的浏览器中发生的,因为规范是这么说的——我认为他从以下部分中选择了错误的引用CSS 2.1 规范 about 边缘塌陷.

他引用的观点解释了边距如何折叠,而不是它们如何“移动”到父元素。

这就是解释它的原因:

  • If the top and bottom margins of a box are adjoining, then it is possible for margins to collapse through it. In this case, the position of the element depends on its relationship with the other elements whose margins are being collapsed.
    • 如果元素的边距与其父级的上边距折叠在一起,则框的上边框边缘将定义为与父级的相同。

或者,以更易于人类阅读的形式Mozilla 开发者文档:

父母和第一个/最后一个孩子:

如果没有边框、内边距、内联内容或间隙来分隔块的 margin-top 与其第一个子块的 margin-top,或者没有边框、内边距、内联内容、高度、最小高度或最大-height 将块的 margin-bottom 与其最后一个子块的 margin-bottom 分开,然后这些边距折叠。折叠的边距最终位于父级之外。

至于如何修复它,我可能会选择overflow: auto解决方案克里斯·劳埃德建议(尽管可能有副作用)。

但这实际上取决于代码的其余部分到底是什么样子。在这个简单的例子中,您可以轻松地更改margin在子元素上padding在父元素上。

或者您可以浮动子元素,或者绝对定位它......

或者反转怎么样clearfix如果你想变得非常奇特:

.outer:before {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非常简单的 html 的意外边距 的相关文章

随机推荐

  • 稀疏向量之和:缺陷还是特征?

    我最近在 MATLAB R2022a 中偶然发现了以下行为 gt gt a sparse 1 2 1 a 1 2 1 gt gt b sparse 2 1 18 b 2 1 18 gt gt a b ans 2 1 18 1 2 1 2 2
  • 如何将额外意图传递给两项活动

    我有一个应用程序 在第一个活动中询问第二页上的人名 它在句子中显示该名称我想在第三个第四或第九个活动中使用该名称我如何正确声明它 公开 并调用它我何时何地需要它 这是我发送的代码 Main public class MainActivity
  • Android 中的线程处理长时间运行的进程

    好吧 这是我的问题 我想学习 AsyncTask Threading 和 Handler 来处理长时间运行的任务 我使用了 Android Cook Book 和 New Boston Android 教程 但我无法使其工作 我需要更改进度
  • 使用动态 ID 选择 Multiple SelectManyCheckBox 中的所有项目

    我想使用 JSF 顶部的 PrimeFaces 组件来选择某些复选框组中的所有复选框 我的代码是这样的
  • 获取 RecyclerView 中的可见项

    我需要知道哪些元素当前显示在我的 RecyclerView 中 没有相当于OnScrollListener onScroll ListView 上的方法 我尝试与View getGlobalVisibleRect 但是这个 hack 太丑陋
  • 以编程方式登录站点

    这可能听起来很愚蠢 但是我们可以通过传递用户凭据 用户 ID 和密码 以编程方式登录 Linkedin 等网站吗 我不是在谈论使用 OAuth 或其他机制 Edit 您可以使用脚本以这种方式登录许多站点 我通常更喜欢使用 Beautiful
  • UITextView - 设置字体不适用于 XCode 5 上的 iOS 6

    我正在为我的用户界面使用故事板 我之前使用的是 XCode 4 6 并在 iOS 6 上发布 此后我使用 XCode 5 更新到 iOS 7 并更新了 Storyboard 以与 XCode 5 很好地配合 但我有一个问题 UITextVi
  • 在 React 的 useEffect() 中获取数据返回“未定义”

    我正在尝试从数据库中获取数据 这是一个获取请求 只要我在异步函数中使用获取的数据 一切都可以正常工作 但除此之外 它只是返回 未定义 我究竟做错了什么 感谢您的帮助 const accountInfos setAccountInfos us
  • 创建一个新文件,文件名包含循环变量,python [重复]

    这个问题在这里已经有答案了 我想在循环上运行一个函数 并且想将输出存储在不同的文件中 以便文件名包含循环变量 这是一个例子 for i in xrange 10 f open file i dat w f write str func i
  • Chrome 和 CSS 属性选择器

    我有以下 HTML 代码 我想用 css 格式化无法更改的数据格式 来自 xml 我必须为具有不同属性值的元素赋予不同的样式 我想使用 CSS 属性选择器 body background color black s text decorat
  • 如何在 Grails 脚本中访问服务?

    关于 create script run script 的文档很少 所以我想知道是否可以在 grails 脚本中注入 使用域类 在普通的 Grails 类中 我可以注入如下服务 定义我的服务 但我不确定 grails 脚本中的位置 要在脚本
  • jQuery,如何在 .load() 之后重新绑定 html 元素

    我有一个 html 组件 单击按钮后将重新加载该组件 组件的某些元素绑定到单击和悬停处理程序 一切工作正常 直到 load 调用函数来重新加载组件 加载组件的元素未绑定到相应的处理程序 此时 我将 js 脚本放在组件的末尾 以便它绑定元素
  • Flask 中的一对一关系

    我正在尝试使用 SqlAlchemy 在 Flask 中创建一对一关系 我按照之前的post我创建了如下类 class Image db Model tablename image image id db Column db Integer
  • 使用 writeAttribute() 方法使用 XMLWriter 进行 php XML 导出问题

    我正在将表数据导出到 xml 中 其中在内容列中包含多语言内容并混合了 html 例如 xmlWriter gt writeAttribute value contents record name testing contents Just
  • JsFiddle 上的鼠标事件不起作用?

    我的小提琴在这里 但我不明白为什么它没有在 onmouseout 事件上调用我的函数 http jsfiddle net foreyez Xf6LW 有任何想法吗 工作正常 您只需将函数放在文档的头部 或元素位于 DOM 中之后的主体中 即
  • 如何使用 Telethon bot API 获取频道实体?

    我无法使用 Telethon Bot 获取对话框 因为该方法仅适用于客户端 因此 当我尝试使用其 id 访问实体时 我收到错误 如果我无法解析所有通道并且无法通过 id 访问它们 我该如何访问实体 通道 我想解析来自私人群组的消息并使用 T
  • Tensorflow和OpenCV实时分类

    我正在测试机器学习水域并使用TS成立模型来重新训练网络以对我想要的对象进行分类 最初 我的预测是在本地存储的图像上运行的 我意识到从文件中取消持久化图形需要 2 5 秒的时间 并且大约在同一时间运行实际的预测 此后 我调整了我的代码以合并来
  • CreateProcess 立即返回,但前提是启动的进程被隐藏

    我有下面的 Delphi 代码来为 CreateProcess API 调用提供一个友好的包装器 function StartProcess ExeName string CmdLineArgs string ShowWindow bool
  • Apache Spark 处理 case 语句

    我正在处理将 SQL 代码转换为 PySpark 代码的过程 并遇到了一些 SQL 语句 我不知道如何处理 pyspark 中的案例陈述 我计划创建一个 RDD 然后使用 rdd map 然后进行一些逻辑检查 这是正确的做法吗 请帮忙 基本
  • 非常简单的 html 的意外边距

    我有一个非常简单的html 红色 div 位于蓝色 div 内部 并且上边距为 10 像素 在非 ie 浏览器上 蓝色框距离视口顶部 10 px 红色 div 位于蓝色 div 的最顶部 我期望的是 ie 行为 红色 div 必须距蓝色 d