四时宝库

程序员的知识宝库

css3新手入门(9)css中的margin塌陷问题

今天遇到设置margin的问题,就是在设置垂直方向上相邻的两个块级元素之间,它们之间的外边距(margin)可能会发生一种特殊的合并现象。

用一个简单的示例解释下。

html+css代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .parent{
        width: 300px;
        height: 300px;
        background-color: aqua;
    }
    .child1{
        width: 100px;
        height: 100px;
        background-color: blueviolet;
        margin-top: 20px;/* 子元素的上外边距 */

    }
    .child2{
        width: 100px;
        height: 100px;
        background-color: gray

    }
   
    
    /* 正常情况下,你会期望在.parent和.child之间看到20px的间距,  

   但由于margin塌陷,这个间距可能看起来比预期的要小或根本不存在,  

   特别是如果.parent的上方没有其他元素或边框/内边距来阻止塌陷的话。  

*/

</style>
<body>
    <div class="parent">  

        <div class="child child1">Child 1</div>  
      
        <div class="child child2">Child 2</div>  
      
      </div>
</body>
</html>

运行效果如下:

怎么解决margin塌陷呢,第一种方式给父元素加上边框

border: 1px solid transparent; /* 阻止margin塌陷 */

但是这种方式会占内容盒子的大小

所以比较好的解决方式就是,给父元素加上overflow

overflow: hidden; /* 触发BFC,避免子元素margin塌陷 */

这样就完美解决了。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接