- 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"
Section 8.3.1 of the CSS 2.1 spec关于崩溃的边距状态:
If the top and bottom margins of an element with clearance areadjoining, its margins collapse with the adjoining margins offollowing siblings but that resulting margin does not collapse withthe bottom margin of the parent block.
这是我试图从这个陈述中得到一些东西的尝试,这肯定是不稳定的:
该语句考虑了一个元素 X,其中:
X 有间隙,因此“clear: left;”、“clear: right;”中的任一个或“明确:两者;”属性已应用于它。
由于 X 的顶部和底部边距相邻,在正常流程的情况下,我们正在考虑以下情况:
然后规范说,“它的边距与相邻的边距一起折叠以下 sibling ”,但最多只能有一个以下 sibling ,如上所述,所以这基本上意味着如果有然后 margin 崩溃。
“但由此产生的边距不会与底部边距一起折叠父 block 的。” - 我不明白这一点:如果底部边距与 sibling 的上边距相邻,那么它不能与父 block 的底部边距,除非兄弟 block 的高度为零。
我完全糊涂了。有人可以用更好的方式解释这个陈述吗?也许用一些说明性的例子?
最佳答案
首先,澄清几点:
带间隙的元素是指将 clear
设置为 none
以外的元素 并且实际上是在清除 float 。
顶部和底部边距相邻的元素意味着彼此相邻,而不是与兄弟相邻。我们谈论的是一个没有边框或填充的 0 高度元素,因此元素的上边距和下边距相互接触。发生这种情况时,它们一起坍塌,这种情况称为坍塌。
现在,让我们看一个例子:
body {
border:solid;
}
#container {
margin: 20px;
background: blue;
}
#floated {
float: left;
width: 20px;
height: 20px;
background: red;
}
#cleared {
clear: left;
margin-top: 10px;
margin-bottom: 20px;
}
#following {
margin-top: 30px;
}
<body>
<div id=container>
<div id=floated></div>
<div id=cleared></div>
<div id=following></div>
<div>
</body>
在这里玩:http://jsbin.com/wuvilu/1/edit?html,css,output
由于主体上有边框,您可以看到蓝色#container 周围有 20px 的边距。红色的#floated 也是明显的 20px x 20px。
然后,由于它的高度为 0,没有填充也没有边框,#cleared 的顶部和底部边距相互折叠。它们也与#following 的上边距相邻。这个折叠边距的大小是 30px,是三个中最大的。
由于#following 的高度为 0 并且没有填充和边框,因此我们的 30px 边距与#container 的底部边距相邻,并且会与它一起折叠。只是现在您引用的规则生效了,但事实并非如此。
由于它不会与容器的底部边距一起折叠,因此必须将其放置在其中的某个位置。在哪里?它从#floater 底部边缘上方 10px 开始,并延伸到下方 20px。为什么? #cleared 的顶部边距是参与此折叠边距的最顶部边距,因此我们从它开始的地方开始。因为它是 10px,所以我们折叠的边距从 #floater 的底部边缘上方 10px 处开始,即紧邻它之前的元素。
是的,这太疯狂了,大多数涉及折叠的场景都是疯狂的。通过 折叠是一个糟糕的想法,它永远不应该进入 CSS,但它在人们了解之前就已经出现了,现在我们必须处理它,以及所有疯狂的后果。
关于CSS 2.1 规范 : 8. 3.1 折叠边距:无法正确解释特殊情况:寻求澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19754939/
是否可以使用 av_seek_frame() 函数查找 I-Frame。 我面临的问题是,如果我在 AVC 文件中查找,如果我不刷新缓冲区,我会收到很多噪音。如果我刷新缓冲区,解码器不会返回一个帧,直
在我处理 SL3/SL4 应用程序并开始使用字体时,我发现缺乏有关字体策略的文档和最佳实践。例如: 是否有常见的后备字体 支持的字体集(Arial、Comic 无 MS 等)?是否有一组关于 Wind
是否有一个我可以运行而什么都不做(或很少做)而永远不会出错的命令? 我需要一些东西来测试海豚。 最佳答案 注释什么都不做(但如果根本没有命令,您的数据库驱动程序可能会提示): /* Hello, wo
我正在寻找与 Delphi (7) 一起使用的 FOSS SHA1 实现。 最好是一些小的东西,甚至可能是独立的 SHA1,而不是过去的一个巨大的库。易于安装和使用固然很好,但可靠性当然是第一位的。
团队, 我是 Azure 的初学者,对 Blob 存储日志有一些疑问 我指的是这个链接http://blogs.msdn.com/b/windowsazurestorage/archive/201
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我在周末发现了 Akavache,它看起来是一个强烈推荐的用于在 Win8 和 WP8 上缓存项目的解决方案。 但是,我找不到任何实际示例或如何使用它的文档! 有人可以分享任何示例项目或文档吗? 最佳
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
Delphi XE2 和 MySql。 我的 previous question导致建议我应该使用 MySql 的 native TIMESTAMP 数据类型来存储日期/时间。 不幸的是,我似乎找不到
DDX 技术是为将资源与类成员链接起来而创建的(例如)。在我的解决方案中,我需要在不存在于类成员 CCtreeCtrl 的资源中的 myCCtreeCtrl(CCtreeCtrl 实例)之间建立连接。
我遇到了这个问题: A shoemaker has N jobs (orders from customers) to execute. The shoemaker can work on only
typedef union { float flts[4]; struct { GLfloat r; GLfloat theta; GL
我有两个我想组合的以下形状的数组。 数组: arr1 = [["apple", "aardvark"], ["banana", "beach"]] arr2 = ['A', 'B'] 期望的结果: [
这个问题已经asked before , 但每次接受的答案只是辞职,使用 Application.MacroOptions ( VBA6 ) ( VBA7 ) 提供功能描述,但此信息实际上并未显示为工
如标题所述,-ss命令不适用于某些设备,例如华为 Mate 10。 这是我正在使用的命令以及如何获取值: Format formatter = new SimpleDateFormat("00:" +
我被指派负责修订当前的报告服务身份验证流程。目的是保持必要的安全级别,并简化授予对各个报告的访问权限的维护/配置。 我无权访问域 Controller 以修改或创建新的 AD 组。我必须与当前存在的组
我正在尝试使用 ashx 处理程序作为 HTML5 视频源。我可以做到这一点,但我无法在已经缓冲的视频上进一步前进。 我可以在使用标准 MP4 源的网络选项卡上看到向前搜索会创建另一个请求,但使用处理
#include #include class Test { char name[10]; int data; public: void getData()
您是否知道任何具有外键约束和/或提供事务支持的 SQLite 替代方案(基于可移植/平面文件/无服务器)? 最佳答案 从版本 3.6.19 开始,SQLite supports foreign key
我正在寻找一个简单的脚本,我可以在 bash 文件中使用它来检查是否有任何可用的系统更新。 我从 #!/bin/bash clear updates=$(apt list upgradeable) i
我是一名优秀的程序员,十分优秀!