前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决margin击穿的几种方法

解决margin击穿的几种方法

作者头像
德顺
发布2019-11-13 17:08:32
7960
发布2019-11-13 17:08:32
举报
文章被收录于专栏:前端资源前端资源
前端开发过程中经常会遇到这种问题,明明设置的是子元素的margin值,结果却作用在了父元素上,例如的代码:

HTML部分:嵌套两层div

代码语言:javascript
复制
<div class="box">
    <div class="inner">
        margin击穿
    </div>
</div>

style/css部分:给元素设置宽高和背景,便于观察,给内部的自元素设置一个 100px 的上边距。

代码语言:javascript
复制
.box{
    margin: 0 auto;
    background: red;
    width: 500px;
    height: 300px;
}
.inner{
    margin-top: 100px;
    background: green;
    color: #FFF;
    width: 200px;
    height: 100px;
}

我明明只设置了子元素 .inner 的 margin 值,结果这个 100px 的 margin-top 却作用在了父元素 .box 上,运行结果如下图,这就是所谓的margin击穿。

1.png 解决margin击穿的几种方法 经验总结
1.png 解决margin击穿的几种方法 经验总结

margin 击穿就是两个元素嵌套,哪个 margin 较大则哪个生效。

解决 margin 击穿的方法有以下几种:

1、给父元素加一个边框

代码语言:javascript
复制
.box{
    1px solid #000;
}

缺点:会多一个边框,不可取。

2、在父元素添加 overflow:auto; (推荐) 或者 overflow:hidden;

代码语言:javascript
复制
.box{
    overflow:auto;
}

3、给子元素设置 display:inline-block;

代码语言:javascript
复制
.inner{
    display:inline-block;
}

4、给子元素设置浮动再清除浮动,太麻烦,不推荐。

代码语言:javascript
复制
.inner{
    float:laft;
}
.box::after{
    content: '';
    display: block;
    clear: both;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-03),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档