• CSS学习笔记——外边距坍塌


    1.坍塌发生的情况

    外边距坍塌(margin collapsing)是指两个元素紧挨着时,两个外边距会缩小到一个外边距,这个词在《精通CSS》(第2版)这本书中也被称为“外边距叠加”。这个现象只会发生在Normal flow布局中,不会发生在绝对定位布局和浮动布局。(详情可参看CSS学习笔记——布局)

    1.1 两个块级元素上下布局时发生坍塌

    上下两个元素外边距接壤时,下面的元素会上移。他们之间的距离(边框到边框)会坍塌到一个外边距x,这个外边距x是两个外边距的较大值。




    下面看一个实例

    //index.html html5中head body标签可以省略
    <div class="test1">Class test1</div>
    <div class="test2">Class test2</div>
    <link rel="stylesheet" type="text/css" href="test.css">
    
    //test.css
    .test1{
        color: red;
        background-color: black;
        margin: 10px;
        padding: 5px;
        border: 10px solid;
    }
    
    .test2{
        color: blue;
        margin: 20px;
        padding: 10px;
        border: 10px solid;
    }

    橙色的是chrome浏览器指示工具,指示了test2元素的外边距是20px,刚好到达test1元素的边框。test1元素的10px外边距坍塌消失。
    backgroud-color显示的区域由内边距padding决定。外边距margin无颜色设置。



    1.2 父子元素坍塌

    如果父元素没有内边距和边框,即父子元素之间没有缓冲的东西阻挡一下,那么子元素的外边距就会坍塌。在下面例子中,两处css都注释掉,会出现上面那张图;如果放开任一个注释,那么就会出现中间那张图;如果父元素有上内边距没有下内边距,那么就会出现不对称坍塌的情况,上面不坍塌,下面坍塌,正如下面那张图。

    //index.html
    <div class="test1">Class test1</div>
    <div class="test2">Class test2</div>
    <link rel="stylesheet" type="text/css" href="test.css">
    
    .test1{
        color: red;
        background-color: grey;
        margin: 10px;
          /*padding: 1px;*/
          /*border: 1px solid;*/
    }
    
    .test2{
        color: blue;
        margin: 20px;
        background-color: black;
    }








    2.自身不会坍塌

    在《精通CSS》(第二版)的第42页中,文中说空元素(无内容、边框、内边距)会自身坍塌,但经过试验,发现空div元素不会自身坍塌。



    3.坍塌作用

    外边距坍塌这个现象很奇怪,为什么会有这么一个隐含的潜规则呢,《精通CSS》中给出了一个应用场景:在文章中,如果没有外边距坍塌作用,那么第一段的上边距会显得跟其他段落间距不一致。
    这里写图片描述

    【Reference】
    1. 《精通CSS》(第2版)

  • 相关阅读:
    如何写一个bat文件,让他去执行某一个地方的bat文件
    服务器加电自动开机模式设置
    第三章 线程状态
    第二章 线程安全
    第一章 线程
    多线程入门
    异常
    SSO系统介绍
    解决:Nginx访问静态页面出现中文乱码
    错误处理:java.lang.NoClassDefFoundError: javax/jms/JMSContext
  • 原文地址:https://www.cnblogs.com/season-peng/p/6759419.html
Copyright © 2020-2023  润新知