- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我的一个 friend 对这个简单的 html/css 任务有疑问:http://jsfiddle.net/kaHzY/6/
问题是 .headline
的 margin-top
向下推 #main div
尽管它应该直接跟在 nav
之间没有任何空格。
添加 div .inner
和 1px
的 padding
解决了这个问题。 .headline
仍然有边距,但不再向下推 #main div
。
我知道这种行为,但我无法解释。您如何解释这一点,尤其是对正在学习 css 的人?为什么会这样?
谢谢
最佳答案
这是典型的折叠边距行为。
编写 CSS 规范的人认为这是一个好主意,可以防止边距产生过多的空白。如果没有这种行为,控制 block 元素之间的边距/空白将需要做更多的工作。
引用资料:
CSS2 规范 - http://www.w3.org/TR/CSS2/box.html#collapsing-margins
安迪巴德文章 - http://andybudd.com/archives/2003/11/no_margin_for_error/
Eric Meyer 文章 - http://www.complexspiral.com/publications/uncollapsing-margins/
折叠边距是 CSS 盒模型的一个特性,它构成了视觉格式模型的基本工作单元,使我们能够拥有一个合理的网页开发环境。
在设计 CSS 规范时,作者必须平衡如何编写规则,例如:margin: 1.0em
,以及这些规则如何在需要从上到下和从左到右的内容布局 block (至少在西欧语言中)。
按照上面引用的 Eric Meyer 文章的思路,假设我们有一系列的段落,其页边距根据以下样式设置:
p { margin: 1.00em; }
对于我们这些习惯于看到段落之间有规则间距的打印页面的人来说,人们会期望任何两个相邻段落之间的间距为 1.00em。人们还希望第一段之前有 1.00em 的边距,最后一段之后有 1.00em 的边距。这是对 p
的简单 CSS 规则应该如何表现的合理且可能简化的期望。
但是,对于构建解释简单 p
规则的 CSS 引擎的程序员来说,有很多歧义需要解决。如果人们期待 CSS 规则的打印页面解释,那么这自然会导致 collapsing margin
行为。所以程序员想出了一个更复杂的规则,比如:如果有两个相邻的 p
标签有上下边距,则将边距合并在一起。
现在这就引出了一个问题,您如何“将边距合并在一起”?相邻顶部和底部边距的最小值或最大值,两者的平均值?第一个元素的边距总是?如果您有 p
以外的其他 block 元素怎么办?如果您添加边框或背景?下一步是什么?
最后,您如何以这样一种方式计算所有这些边距设置,以便您不必多次遍历整个 HTML 元素集(这会使复杂的页面加载缓慢,尤其是在早期的浏览器中)?
在我看来,折叠边距提供了一个复杂问题的解决方案,平衡了为边距编写 CSS 规则的难易程度、用户对打印页面在我们的打印传统中的布局方式的期望,最后提供了一个过程,可以在浏览器存在的编程环境中实现。
关于css - 有人可以解释这种 css margin 行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17155254/
当我设置 margin-right: 50px;我没有看到任何效果,但是当我替换 margin-right: 50px; 时左边距:50px;或 margin-top: 50px;我确实看到了效果。这
CSS .title{ margin-top: 200px; // does not work! margin-left: 20px; font-weight: bold;
我不知道,但是 li 元素的 margin-top 只有在它大于 h2 元素的 margin-bottom 时才会起作用,我想知道为什么? Test1 Test2 谢谢。 最佳答案 您所描述的听起
我有 2 个 div 的问题 - 两个呈现为 block 的边距均为 15px(顶部 div 有底部边距,底部有顶部),因此我预计两者之间的差距是 30px 而不是 15px,这是正确的假设还是我要疯
我一直以为我了解利润率和负利润率,但显然我不了解!我刚刚开始一个新的设计并且已经遇到了问题。 我有一个 div (hill3Cont) 和另一个嵌套在里面的 div (hill3Hill),这是它们的
我有一系列这样的元素: ... ....... ... ....... h1 上边距为 5px,p 上边距为 10px。但是产生的边距只有 10px。如果我将底部边距增加到 50px,将顶部边距增加
由于 margin-right: auto 和 margin-left: auto 水平居中元素,我希望它们的垂直对应物以相同的方式运行。 但我知道这不会发生,根据 CSS 规范: 10.6.2 In
我在让我的 div 将我的页面向下移动 30 像素/在我的 div 顶部添加边距 30 像素时遇到问题。我的 div 使用 margin auto 在页面中心对齐。 然而,当我尝试添加这行代码时:边距
这个问题在这里已经有了答案: CSS margin terror; Margin adds space outside parent element [duplicate] (7 个答案) 关闭
我有一个 div 在另一个之上。顶部的 div 有 margin-bottom: 10px,底部的 div 有 margin-top: 10px,但两个 div 之间只有 10px 的空间。 实例:h
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 2 年前。 我的 CSS 边距没有按照我想要或期望的方
在此website我正在尝试减少横幅和文本之间ON MOBILE 底部和顶部的边距。 如果您在智能手机和平板电脑上查看,横幅的顶部和底部似乎有一些边距。 这是我的 CSS: .page-id-996
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
这个问题在这里已经有了答案: Why does this CSS margin-top style not work? (14 个答案) 关闭 3 年前。
我是一名优秀的程序员,十分优秀!