为什么使body标签的样式"position:relative"导致绝对定位的div开始降低?

Don*_*mmy 5 html css html5 css3

如果我创建一个div(在页面的顶部)有一个margin-top: 10px,那么一个绝对定位的div(在更高的z-index和div 之外以及div的父级之外)开始不是在top: 0px但是在10px!

http://jsfiddle.net/afv3gze7/

为什么是这样?简单地删除position: relative正文修复了所有内容(但导致我的代码中的其他内容出现问题 - 我需要相对定位的身体).

http://jsfiddle.net/afv3gze7/1/

问题代码:

<!DOCTYPE html>
<html>
    <head>
        <style>
            html
            {
                position: relative;
                min-width: 100%;
                height: 100%;
                min-height:100%;
            }

            body
            {
                min-width: 100%;
                min-height:100%;
                font-size: 100%;
            }
            .outer
            {
                position: relative;
                top: 0em;
                left: 0em;
                width: 100%;
                height: 100%;
                background-color: #ffffff;
            }

            .overlay
            {
                position: absolute;
                top: 0px;
                left: 0em;
                width: 100%;
                height: 100%;
                background-color: #000000;
                -moz-opacity: 0.50;
                -khtml-opacity: 0.50;
                -webkit-opacity: 0.50;
                opacity: 0.50;
                -ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=50);
                filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
                filter:alpha(opacity=50);
                z-index: 6;
                display: none;
            }

            .inner
            {
                position: relative;
                width: 100%;
                border: none;
                margin: 0em;
                padding: 0em;
                margin-top: 3.875em;
                overflow: hidden;
                z-index: 0;
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <div class="inner">s</div>
        </div>
        <div class="overlay" style="display: block;"></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Mat*_*ith 1

CSS就是这么做position: relative的。它将元素从通常渲染的位置移动,并留下它通常占据的空间。这里有更多关于相对定位的内容

如果必须保留position: relativebody 元素,请将margin-top.inner 类的属性更改为padding-top

.inner
{
  position: relative;
  width: 100%;
  border: none;
  margin: 0em;
  padding: 0em;
  /*margin-top: 3.875em;*/
  padding-top: 3.875em;
  overflow: hidden;
  z-index: 0;
}
Run Code Online (Sandbox Code Playgroud)