CSS垂直向下移动div

时间:2016-10-15 22:05:53

标签: html css

我试图将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;
}

这是该网站的截图: image

6 个答案:

答案 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

有一些解决方法。选择任何:

  1. 使用padding代替margin作为内部组件。
  2. 更改display类型。例如display: inline-block
  3. 使用absolute定位。