呦呦呦,不会还有人不会解决css中的外边距塌陷吧

如何去解决外边距塌陷

满足以下条件就会产生外边距塌陷现象:

1. 子元素在父元素里面

<head>
 <style>
     nav{
         width: 400px;
         height: 300px;
         background-color: red;
     }
     .div1{
         width: 300px;
         height: 200px;
         background-color: green;
     }
 </style>
</head>
<body>
 <nav>
     <div class="div1"></div>
 </nav>
</body>

2.子元素中有margin-top或者margin-bottom值

<head>
    <style>
        nav{
            width: 400px;
            height: 300px;
            background-color: red;
            /* 外边距向下移动50px,由于父元素有继承性,达不到我们要的效果 */
            margin-top: 50px;
        }
        .div1{
            width: 300px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>

解决方案:

第一种:给父元素增加内边距padding值

<head>
    <style>
        nav{
            width: 400px;
            height: 300px;
            background-color: red;
            padding: 10px;
        }
        .div1{
            width: 300px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>

效果:
给父元素增加内边距padding值

第二种:父元素增加边框border值

<head>
    <style>
        nav {
            width: 400px;
            height: 300px;
            background-color: red;
            border: 5px solid blue;
        }
        .div1 {
            width: 300px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>

<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>

</html>

效果:
父元素增加边框border值

第三种:父元素增加overflow:hidden

<head>
    <style>
        nav {
            width: 400px;
            height: 300px;
            background-color: red;
            overflow:hidden;
        }
        .div1 {
            width: 300px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>

<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>

</html>

第四种:给父元素或者子元素增加浮动,让其脱离标准流都可以

<head>
    <style>
        nav {
            width: 400px;
            height: 300px;
            background-color: red;
            float: left;
        }

        .div1 {
            width: 300px;
            height: 200px;
            background-color: green;
            float: right;
        }
    </style>
</head>

<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>

</html>

效果:
给父元素或者子元素增加浮动

第五种:将父元素转变为行内块元素,display:inline-block

<head>
    <style>
        nav {
            width: 400px;
            height: 300px;
            background-color: red;
            display:inline-block;
        }
        .div1 {
            width: 300px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>

<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>

</html>

第六种:给父元素或者子元素定位都可以,原理同样是使其脱离标准流,不过只能用绝对定位和固定定位

<head>
    <style>
        nav {
            width: 400px;
            height: 300px;
            background-color: red;
            position: relative;
        }
        .div1 {
            width: 300px;
            height: 200px;
            background-color: green;
            position: absolute;
            left: 50px;
            top: 20px;
        }
    </style>
</head>
<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>
</html>

效果:
给父元素或者子元素定位都可以

第七种:给父盒子增加flex或者inline-flex

<head>
    <style>
        nav {
            width: 400px;
            height: 300px;
            background-color: red;
            flex:inherit;
        }
        .div1 {
            width: 300px;
            height: 200px;
            background-color: green;
            margin-left: 20px;
        }
    </style>
</head>
<body>
    <nav>
        <div class="div1"></div>
    </nav>
</body>
</html>

效果:
给父盒子增加flex或者inline-flex

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值