div内容保证金推进容器

jef*_*904 7 html css

我遇到了一个令我困惑的问题.

我有一个容器,我想将背景应用到浏览器屏幕右上角的位置.里面的div有一个4em的上边距,这是推动容器div.

CSS:

#container {
background: transparent url("../images/house-bg.png") top right no-repeat scroll;
}

#wrapper {
    background: #FFF;
    width: 960px;
    height: 600px;
    margin: 4em auto 0;
    border: 10px solid #C3CF21;
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    border-radius: 20px;
    -moz-box-shadow: 0 0 25px #444;
    -webkit-box-shadow: 0 0 25px #444;
    box-shadow: 0 0 25px #444;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="container">
        <div id="wrapper">
            <div id="header">

            </div>
            <div id="main">

            </div>
        </div>
        <div id="footer">
            &copy; Copyright <?php echo date("Y");?> Company, Inc.
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

我希望包装器的边距位于容器div内而不是外部.

我尝试了多个显示属性和位置属性无济于事.解决它的唯一问题是&nbsp;在#wrapper开始之前插入一个" ",但必须有一个CSS修复.

Mis*_*lin 24

您可以添加overflow:hidden以"关闭" #containerdiv中的上下文.

在这里,http://jsfiddle.net/kQsPR/尝试删除overflow:hidden,它将按照您的描述运行.

此行为在此处指定:http: //www.w3.org/TR/CSS2/visuren.html#block-formatting

在块格式化上下文中,每个框的左外边缘触摸包含块的左边缘(从右到左格式化,右边缘触摸).即使存在浮动也是如此(尽管盒子的线框可能因浮动而缩小),除非盒子建立了新的块格式化上下文(在这种情况下,盒子本身可能因浮动而变窄).

这正是"隐藏"以外的"溢出"能够(建立新的格式化上下文),例如,您也可以通过在#container元素中添加border-top来实现.

  • 家长不会忽视孩子的保证金.他们的利润率崩溃了.这意味着,在两个margin-top值之间的最大值适用:在我的测试用例(http://jsfiddle.net/kQsPR/1/)中,它是一个孩子的margin-top:10px(它比margin-top更大:0; - 父级的默认值.).它实际上是一个非常有用的功能(边缘折叠),允许您编写更一般的样式,尤其是排版.它允许您保持垂直节奏(http://webtypography.net/Rhythm_and_Proportion/Vertical_Motion/2.2.2/). (3认同)