我试图将div中的div移动一点,但是当我使用
时margin-top: 10px;
它在顶部形成一个白色间隙。继承人html:
<div id="topb">
<div id="selection">
</div>
</div>
继续CSS:
#topb {
background: url(images/tomato-background.jpg) no-repeat fixed;
background-size: cover;
height: 100%;
width: 101%;
margin-left: -10px;
}
#selection {
background-color: #4d4d4d;
width: 60%;
height: 500px;
margin: auto;
margin-top: 40px;
}
答案 0 :(得分:0)
删除#selection中的margin-top样式,并将padding-top应用于#topb
答案 1 :(得分:0)
这是一个“崩溃边际”问题。 它在这个问题中得到了回答: Why would margin not be contained by parent element?
您必须将父div更改为(1)添加边框,(2)绝对位置,(3)显示为内联块,(4)溢出自动。
有关详细信息,请参阅发布的链接。
答案 2 :(得分:0)
也许您可以通过添加padding-top:10px;
来修改父元素,而不是修改子元素。
答案 3 :(得分:0)
为此,您可以使用position: absolute
。这是代码:
#topb {
background: url(images/tomato-background.jpg) no-repeat fixed;
background-size: cover;
height: 100%;
width: 101%;
margin-left: -10px;
}
#selection {
background-color: #4d4d4d;
width: 60%;
height: 500px;
margin: auto;
position: absolute;
top: 40px; /*This is where it is changed as well as the line above*/
}
希望它有所帮助!我认为填充仍然会留下背景,所以这是一个更好的主意。
答案 4 :(得分:0)
这是工作fiddle希望它可能会有所帮助。
position:absolute;
position:relative;
答案 5 :(得分:0)
这是因为当你在另一个块元素中有一个块元素(display:block)时,边距将会崩溃。它只会被认为是最大的保证金。
因此,在您的示例中,它只会考虑其中一个边距(40px)。 See reference about collapsing margins
有一些解决方法。选择任何:
padding
代替margin
作为内部组件。 display
类型。例如display: inline-block
。absolute
定位。