• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > margin折叠的问题探讨

margin折叠的问题探讨

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含margin,折叠等相关知识,佚名 希望在学习及工作中可以帮助到您

 前几天,有个电面问道了这个问题,抓紧补一下这方面的缺口。以下是一下网上收集的资料:

margin折叠的问题,不是bug,而是正常的规则。

在css2.1中,水平的margin不会被折叠。

垂直margin可能在一些盒模型中被折叠:

 1、在常规文档流中,2个或以上的块级盒模型相邻的垂直margin会被折叠。
最终的margin值计算方法如下:
    a、全部都为正值,取最大者;
    b、不全是正值,则都取绝对值,然后用正值减去最大值;
    c、没有正值,则都取绝对值,然后用0减去最大值。
注意:相邻的盒模型可能由DOM元素动态产生并没有相邻或继承关系。

2、相邻的盒模型中,如果其中的一个是浮动的(floated),垂直margin不会被折叠,甚至一个浮动的盒模型和它的子元素之间也是这样。

3、设置了overflow属性的元素和它的子元素之间的margin不会被折叠(overflow取值为visible除外)。

4、设置了绝对定位(position:absolute)的盒模型,垂直margin不会被折叠,甚至和他们的子元素之间也是一样。

5、设置了display:inline-block的元素,垂直margin不会被折叠,甚至和他们的子元素之间也是一样。

6、如果一个盒模型的上下margin相邻,这时它的margin可能折叠覆盖(collapse through)它。在这种情况下,元素的位置(position)取决于它的相邻元素的margin是否被折叠。
    a、如果元素的margin和它的父元素的margin-top折叠在一起,盒模型border-top的边界定义和它的父元素相同。
    b、另外,任意元素的父元素不参与margin的折叠,或者说只有父元素的margin-bottom是参与计算的。如果元素的border-top非零,那么元素的border-top边界位置和原来一样。
一个应用了清除操作的元素的margin-top绝不会和它的块级父元素的margin-bottom折叠。
注意,那些已经被折叠覆盖的元素的位置对其他已经被折叠的元素的位置没有任何影响;只有在对这些元素的子元素定位时,border-top边界位置才是必需的。

7、根元素的垂直margin不会被折叠。

浮动的块级元素的margin-bottom总是与它后面的浮动块级兄弟元素(floated next in-flow block-level sibling)的margin-top相邻,除非那个同级元素使用了清除操作。

浮动的块级元素的margin-top和它的第一个浮动块级子元素(floated first in-flow block-level child)的margin-top相邻(如果该元素没有border-top,没有padding-top,并且子元素没有使用清除操作)。

浮动的块级元素的margin-bottom如果符合下列条件,那么它和它的最后一个浮动块级子元素的margin-bottom相邻(如果该元素没有指定padding-bottom或border): a、指定了height:auto b、min-height小于元素的实际使用高度(height) c、max-height大于元素的实际使用高度(height)

如果一个元素的min-height属性设置为0,那么它所拥有的margin是相邻的,并且它既没有border-top和border-bottom,也没有padding-top和padding-bottom,它的height属性可以是0或auto,它不能包含一个内联的盒模型(line box),它所有的浮动子元素(如果有的话)的margin也都是相邻的。

当一个元素拥有的margin折叠了,并且它使用了清除操作,那么它的margin-top会和紧随其后的兄弟元素的相邻margin折叠,但结果是它的margin将无法和其块级父元素的margin-bottom折叠。

折叠操作是以padding、margin、border的值为基础的(即在浏览器解析所有这些值之后),折叠后的margin计算将覆盖已使用的不同margin的值。

您可能想查找下面的文章:

  • CSS中margin边界叠加问题及解决方案
  • 深入理解css中的margin属性(推荐)
  • CSS重要属性之 margin 属性知识大整合(必看篇)
  • 浅谈css margin重叠
  • 关于负margin的一些应用
  • CSS 之margin知识点(必看)
  • CSS的margin属性在页面布局中的使用攻略
  • 细说CSS中margin属性的使用
  • 深入解析CSS中margin属性的使用
  • CSS中使用负margin值来调整居中位置

相关文章

  • 2017-08-06CSS中视觉语义不等于基于表现的类
  • 2017-08-06CSS学习之三 字体使用说明
  • 2017-08-06浅谈CSS过渡、动画和变换
  • 2017-08-06CSS3中设置3D变形的transform-style属性详解
  • 2017-08-06css禁止html标签被选中的方法
  • 2017-08-06基于CSS实现的4级下拉菜单效果代码
  • 2017-08-06魔哥css圆角实现代码 (代码精简,完全自适应)
  • 2017-08-06CSS3 Flexbox中flex-shrink属性的用法示例介绍
  • 2017-08-06倾听色彩的声音 网页与产品的配色研究
  • 2017-08-06css 兼容性书写记录

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
    • CSS3中:nth-child和:nth-of-type的区别深入理解
    • 弹出一个遮罩层有正在加载效果的文字
    • css3的transition属性详解
    • CSS的一些小问题如网页中版权符号显示问题等等
    • 详解PNG图片
    • CSS条件注释详解(根据不同浏览器加载CSS)
    • CSS 实现网页图片的预加载
    • 图文讲解CSS的Box Model盒模型中的边距
    • CSS Sprite从大图中截取小图完整教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有