直接上代码,麻烦帮我看下哪里错了,为什么到box2的位置,margin就不好使的。
<style type="text/css">
#box{height: 404px;width: 404px;background-color: #fff;border: 1px dashed;}
#box1{height: 334px;width: 334px;margin:27px ; background-color: #f6f6f6;border: 8px solid #d7effe; }
#box2{height: 300px;width: 300px;margin: 20px; background-color:#ffa0df; }
#box3{height: 216px;width: 216px;margin:41px ; background-color: #ffa0df;border: 1px dashed #ffffff; }
#box4{height: 208px;width: 208px;margin:3px ; background-color: #ffa0df;border: 1px dashed #ffffff; }
#box5{height: 102px;width: 102px;margin:49px; background-color: #96ff38;border: 4px solid #fcff00; }
</style>
<body>
<div id="box">
<div id="box1">
<div id="box2">
<div id="box3">
<div id="box4">
<div id="box5"></div>
</div>
</div>
</div>
</div>
</div>
</body>
做出了的效果
实际上我要做的效果
问题来了,box2和box3上面的margin值为什么出现问题,这个要怎么改。
用padding
这是margin边距重叠的问题
你的#box2 和 #box3 的外边距重叠了,在#box1 #box2 #box3 之间没有border隔断,导致外边距选大的,即#box3的margin 41px起了作用,而#box2的margin-top没有起作用
你可以把box都BFC话,添加overflow:hidden
或者 给box2添加border予以隔断
这个地方需要了解下关于margin垂直边距折叠的问题。
如果父盒子有border
属性的值,或者设置了padding
的值,可以避免这个问题
box2没加边框,所以在内部使用margin无法起作用,这种情况,你可以在box2上加一个border:1px 1px #fff;或者给box2设置一个padding-top:1px;因为没有设置边框或者上面没设置一个内边距,然后里面的就被粘在外面了。以前我经常遇到这种情况。