首先抛出问题:
-
Margin on child element moves parent element
-
Child elements with margins within DIVs
其实: 以上问题都源于css中的margin collapse,即外边距叠加。 以下内容源于css mastery second edition。
margin collapse发生的条件有,处于normal flow(正常文档流,而非postion: float || absolute),block元素间的垂直margin(margin-top, margin-bottom)。所以可以改变元素的定位(增加float属性或position: absolute)来取消margin collapse.
下面是margin collapse的几种情况:
1. 上下两div(上定义有margin-bottom, 下有margin-top): 叠加取较大的margin值

2. margin collapse发生在父元素和子元素之间,前提是垂直边距间不存在padding(内边距)和边框。所以可以通过增加padding属性,或边框,防止叠加。如例子者也。

3. margin collapse会发生在定义有垂直外边距的空元素,如下图

叠加也是连续的:

以上是margin collapse发生的几种情况。
其实 margin collapse 的存在有他自身的意义:

补充:margin边界叠加问题以及ie和Firefox的不同解释

- 大小: 46.1 KB

- 大小: 34.1 KB

- 大小: 22.1 KB

- 大小: 28.5 KB

- 大小: 72.9 KB
分享到:
相关推荐
外边距塌陷是指两个或多个元素的外边距叠加在一起时,实际占用的空间小于每个元素的外边距之和。解决方法包括使用margin-collapse、padding、border等。 3. 清除浮动的方法 浮动(float)可以使元素脱离文档流,但...
- **层叠性**:当多个CSS规则应用于同一个元素时,它们可以相互叠加,除非这些规则之间存在冲突。 - **优先性**:当两个或多个CSS规则发生冲突时,具有更高优先级的规则将会生效。优先级的高低取决于规则的来源和...
CSS 盒子模型由内容区域、内边距、边框和外边距组成。 **36、为什么要初始化样式?** 初始化样式是为了消除浏览器间的默认样式差异,保证一致的视觉效果。 **37、BFC 是什么?** BFC(Block Formatting Context)...
4. **盒模型**:CSS2.0 的盒模型包括元素的边距(margin)、边框(border)、填充(padding)和内容区域,理解盒模型有助于精确控制元素的尺寸和布局。 5. **定位**:CSS2.0 提供了相对定位(relative)、绝对定位...
创建BFC可以避免外边距折叠等问题。 **20、CSS权重优先级是如何计算的?** - CSS权重由特定性(specificity)决定,特定性越高,优先级越高。特定性的计算规则为:内联样式 > ID选择符 > 类/属性/伪类选择符 > ...
14. **边距重叠**:CSS3解决了在某些情况下边距合并的问题,提供了`margin-collapse`属性进行控制。 15. **多背景**:一个元素可以拥有多个背景图像,通过逗号分隔来叠加。 以上只是CSS3众多特性的冰山一角,实际...
- `margin collapse`不会发生在绝对定位元素上。 **19. BFC规范的理解?** - **BFC**: 块级格式化上下文。 - 决定了元素如何布局以及与相邻元素的关系。 **20. CSS权重优先级计算?** - 权重由选择器类型(如ID...