例: 1.不允许出现外边距合并,给外层div添加overflow:hidden或border属性:外层盒子margin-top为100px,内层盒子为50px。
2.允许出现外边距合并:内层div始终保持原位置不变,外层div的margin去两者中最大值:
二、当两个div不存在嵌套关系时,不管是否有border或者overflow属性时,两者始终会存在外边距合并问题。
例:1.第一个div有margin-bottom:100px,第二个为margin-top:50px, 两者间距最终取100px
2.第一个div 由margin-bottom:100px, 第二个为margin-top:150px,两者间距最终取150px
总结:在实际项目中,如果对外边距合并理解不透彻而又不想因为css盒模型的外边距合并问题困扰,可以在不影响布局的问题下,可以添加overflow:hidden属性或者跟透明的border;如无法避免外边距合并问题,谨记两者margin取最大值就好了。
不用图片,只用css制作圆角的另一方法。html代码:<divclass="curvedBox"><span><spanclass="r1" ></span><spanclass="r2" ></span><spanclass="r3" ></span><spanclass="r4" ></span></span><divclass="content">Flex is a cross-platform development framework for creating rich Internet applications (RIAs). Flex enables you to create expressive, high-performance applications that run identically on all major browsers and operating systems. </div><span><spanclass="r4" ></span><spanclass="r3" ></span><spanclass="r2" ></span><spanclass="r1" ></span></span></div>css代码: ody{background-color:#000}.curvedBox{width:300pxmargin: 2510px auto 0}.curvedBox .r1,.curvedBox .r2,.curvedBox .r3,.curvedBox .r4{background-color:#fffdisplay:blockoverflow:hiddenheight:1pxfont-size:1px}.curvedBox .r2,.curvedBox .r3,.curvedBox .r4{border-width:0 1pxborder-left:1px solid #fffborder-right:1px solid #fff}.curvedBox .r1{margin:0 6px}.curvedBox .r2{margin:0 3px}.curvedBox .r3{margin:0 2px}.curvedBox .r4{margin:0 1pxheight:2px}.curvedBox .content{background:#fffborder-left:1px solid #fffborder-right:1px solid #fffpadding:0 5px}这个方法其实并不完美,其实只是利用了”无限接近”的一个概念。看放大后的图的话,可以很清楚地看到锯齿状。锯齿其实把图片放大足够地倍数地话,也能看到锯齿,不过放大地倍数得相当大了。将 r1 r2 r3 r4 层叠起来,利用它们 margin(left/right) 的改变以及 border(left/right),来实现这个近似的效果。理论上,如果 rn 足够多的话,效果就会无限趋近圆弧。不过话又说回来了,多加这么多的标签和css的话,在效率上必然会存在问题,也说不上就比用图片好到哪里去。所以说,这只是提供一个思路,到底怎么用,用在哪里,还得因地制宜。