开发者社区> 问答> 正文

前端页面布局时 margin 无效

在设置元素的margin: 100px auto;时 无法显示顶部100px的外边距,只有设置边框时才有效,不理解问题在哪

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>定位问题</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        body .p1{
            width: 900px;
            height: 600px;
            background-color: #009933;
            margin: 50px auto;
        }
        .p2{
            width: 600px;
            height: 400px;
            background-color: #990099;
            margin: 100px auto;
        }
        .p3{
            width: 400px;
            height: 300px;
            background-color: #CC0033;
            border: 1px solid #ddd;
            margin: 50px auto;
        }
    </style>
</head>
<body>
<div class="p1">
    <div class="p2">
        <div class="p3"></div>
    </div>
</div>
</body>
</html>

展开
收起
杨冬芳 2016-06-08 15:15:08 2062 0
1 条回答
写回答
取消 提交回答
  • IT从业

    当上方元素指定了margin-bottom,下方元素又指定了margin-top的时候,这两个margin就会发生合并,也有称之为塌陷的。塌陷的最终尺寸是两个值中较大的一个。
    解决方法就是需要给父div(例如问题中的p1)设置:
    1、边框,当然可以设置边框为透明:
    .p1{border:1px solid transparent;}或
    .p1{border-top:1px solid transparent;}
    2、为父DIV添加padding,或者至少添加padding-top;
    3、通过over-flow来解决,给父DIV写入:

    .p1{over-flow:hidden;}
    2019-07-17 19:32:03
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载