css - 为什么边距塌陷效果背景图片?

标签 css background margin

我有如下简单的 HTML 和 CSS。我注意到 .outside box 和 .inside box 之间的底部边距塌陷。 我不明白为什么底部边距折叠时我看不到背景图片,背景图片应该与边距无关。 谢谢:)

<div class="outside"> 
<div class="inside"> content </div>
</div>


.outside {background:url(http://blurfun.com/temp/images/bottom.png) left bottom no-repeat;    padding-top:1px;}

.inside { background:#00CCFF; margin:0 0 10px 0; padding:0 0 20px 0;}

最佳答案

您正在尝试嵌套 div 之间的垂直边距折叠 包括这个溢出属性(任何不等于 visible 的值都可以完成这项工作),它会正常工作

    .outside {
       background:#ff0000 url(http://blurfun.com/temp/images/bottom.png) left bottom        no-repeat;    
padding-top:1px;
        overflow:hidden;
    }

添加红色只是为了测试结果。当然可以擦。

详细评论

您的外部 div 在其左下角使用了一种黄色 strip 。

您的内部 div 的底部边距为 10 像素,因为该边距和外部 div 底部边距之间没有任何内容。这就是他们崩溃的原因。

您可以防止这种情况发生,包括底部填充或什至外部 div 的底部边框。但这会改变您的设计意图。

这就是为什么我建议使用 overflow 属性,它也可以防止垂直边距折叠并且不会干扰您的设计。

在此fiddle我在内部 div 中添加了左边距,在外部 div 中添加了红色背景。

对于教学海豚,我还在内部 div 中包含了一个透明背景。

垂直边距折叠

Vertical Margins collapsing

被溢出阻止:隐藏

Prevented by overflow:hidden

玩它。删除 overflow 属性并观察垂直边距折叠。 我希望你已经足够清楚了。

祝你有美好的一天,享受你的编码:-)

关于css - 为什么边距塌陷效果背景图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993184/

相关文章:

html - 溢出 : scroll; remove the text displayed at border

html - 在不创建垂直滚动条的情况下定位带有上边距的导航栏时遇到问题

css - 如何对齐两个相邻的html元素之间的文本

javascript - 将文本添加到圆环图 - ChartJS

java - Android如何处理 "called from wrong thread"异常

安卓游戏滚动背景

css - margin 问题,Safari

javascript - 当我们刷新浏览器时如何防止更改所选颜色

jquery - 表单效果 - 即使将鼠标移开也能平滑突出显示

html - 背景图像位置(从底部和右侧)