• CSS外边距合并


    相邻块元素垂直外边距的合并

    当上下相邻的两个块元素相遇的时候,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top`,则他们之间的垂直间距并不是margin-bottom加上margin-top之和,而是两者之间的较大者,这种现象被称之为相邻块元素垂直外边距的合并(或外边距塌陷)。

    【示例代码】

    <style>
        div {
           100px;
          height: 100px;
        }
    
        .one {
          background-color: orange;
          margin-bottom: 10px;
        }
    
        .two {
          background-color: pink;
          margin-top: 20px;
        }
      </style>
    </head>
    
    <body>
      <div class="one">one</div>
      <div class="two">two</div>
    </body>
    

    【效果图】

    • 注意:这里上下块级元素之间的距离是20,而不是 20+10

    解决办法

    • 其实这是一个浏览器的Bug,日常工作中我们应该尽量避免。在开发中我们由上到下来进行页面布局,上面的布局如果涉及到外边距的话尽量使用margin-bottom,而下面的布局就不要使用margin-top了,简单来说就是兄弟元素的垂直外边距遵循你设置我就不设置

    嵌套块元素垂直外边距的合并

    对于两个嵌套关系的块元素,如果父元素没有上内边距及边框,则父元素的上外边距会与子元素的上外边距发生合并,合并后的外边距为两者中的较大者,即使父元素的上外边距为0,这种情况也会发生。

    【示例代码】

     <style>
        .father {
           200px;
          height: 200px;
          background-color: red;
          margin-top: 20px;
        }
    
        .son {
           100px;
          height: 100px;
          background-color: yellow;
          margin-top: 50px;
        }
      </style>
    </head>
    
    <body>
      <div class="father">
        <div class="son"></div>
      </div>
    </body>
    

    • 上述father元素和son的上外边距是0

    解决办法

    如果想要父子元素有外边距,则使用下面的方式

    • 方式1:可以为父元素定义1像素的上边框或上内边距
        /* border-top: 1px solid transparent; */
        padding-top: 1px;
    
    • 方式2:可以为父元素添加overflow:hidden(溢出隐藏);
  • 相关阅读:
    Dojo中的模块插件
    CommonJS、AMD和RequireJS、NodeJS之间的关系
    require函数
    AMD(异步模块定义规范)
    理解apply()和call()
    JavaScript中的Function类型
    4.1 基本类型和引用类型的值【JavaScript高级程序设计第三版】
    10.1.2 Document类型【JavaScript高级程序设计第三版】
    10.2 DOM 操作技术【JavaScript高级程序设计第三版】
    3.4.2 Undefined类型【JavaScript高级程序设计第三版】
  • 原文地址:https://www.cnblogs.com/it774274680/p/15362003.html
Copyright © 2020-2023  润新知