zoukankan      html  css  js  c++  java
  • margin collapse

    margin折叠规则
     
    • 两个或多个毗邻的普通流中的块元素垂直方向上的margin会折叠
     
     
     
    • 浮动元素/inline-block的元素/绝对定位元素的margin不会和垂直方向上的其他元素的margin折叠
     
     
     
    •  创建了块级格式化内容的元素,不和它的子元素发生margin折叠
     
     
     
    •  元素自身的margin-bottom和margin-top相邻时也会折叠
    一个元素margin-top会和它普通流中的第一个子元素(非浮动元素等)的margin-top相邻;只有在一个元素的height是”auto”的情况下,它的margin-bottom才会和它普通流中的最后一个子元素(非浮动元素等)的margin-bottom相邻。
     
    <div style="margin:50px 0; background-color:green; 50px;">
    
        <div style="margin:-60px 0;">
    
               <div style="margin:150px 0;">A</div>
    
        </div>
    </div>
    <div style="margin:-100px 0; background-color:green; 50px;">
    
        <div style="margin:-120px 0;">
    
               <div style="margin:200px 0;">B</div>
        </div>
    </div>
    有人可能说了,算A和B之间的margin,分别算A和其父元素的折叠,然后与其父元素的父元素的折叠,这个值算出来之后,应该是90px。依此法算出B的为80px;然后,A和B折叠,margin 为90px。
    对吗?错了,大错特错。错在哪里了呢?
    请注意,多个margin相邻折叠成一个margin,所以计算的时候,应该取所有相关的值,而不能分开,分步来算。
    以上例子中,A和B之间的margin折叠产生的margin,是6个相邻margin折叠的结果。
    分别是:
    正值:50px,150px,200px
    负值:-60px,-100px,-120px
    根据有正有负时的计算规则,正值的最大值为 200px,负值中绝对值最大的是-120px,所以,最终折叠后的margin应该是 200 + (-120) = 80px。

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    ES6学习--函数剩余参数 (rest参数)
    ES6学习 --函数参数默认值与解构赋值默认值
    ES6学习--Array.from()方法
    02ython基础知识(一)
    01 Python初探
    c#利用IronPython调用python的过程种种问题
    Android 对话框(Dialogs)
    不可不知的安卓屏幕知识
    C#中的Split用法以及详解
    关于XML文档操作类
  • 原文地址:https://www.cnblogs.com/paopaolee/p/8629776.html
Copyright © 2011-2022 走看看