日期:2014-05-17  浏览次数:20597 次

关于css绝对定位问题
书上说绝对定位是“相对于离它最近的已经定位的祖先元素的位置”,绝对定位的元素脱离了文档流。


我想问一下什么算是已经定位了的祖先元素,不太理解已经定位了的这几个字



求各位帮忙,感激不尽!

------解决方案--------------------
比如
HTML code

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="gb2312" />
        <title></title>
        <style>
            .parent {
                position:absolute; left:100px; top:100px;
                border:1px solid red;
            }
            .sub {
                position:absolute; left:10px; top:10px;
                border:1px solid blue;
                background:#eee;
            }
        </style>        
    </head>
    <body>
        <div class="parent">123
            <div class="sub">123</div>
        </div>
    </body>
</html>

------解决方案--------------------
【已经定位了的祖先元素】就是所要定位的父级元素已经属于非标准流(解释:当某个元素(标签)脱离了标准流(如因为相对定位)排列,就成为非标准流排列)了
------解决方案--------------------
相对定位和绝对定位都是相对于父div标签的。 
 相对------以这个元素的本来应该在的位置为参照点 
 绝对——以父div标签的原点(左上角)为参照点。
 
由于外层是position:relative,所以里层是absolute的话,则会以外层的左上角为位移参考对齐。当然外层只写position:relative,写上left,top这两个值,则表示以:以这个元素的本来应该在的位置为布局参照原点进行left,top对齐。
 
还有一种情况是,只是一个position:absolute;外层没有position:relative,这时会找寻那个点为参考呢?这时候的原则是:如果某父级元素中有relative者,则以某父级元素为参考原点,如果没有position:relative,则以body为参考原点。如果position:absolute外层没有relative时,这两个布局上是没有区别的。
 
当然最后一种情况是:外层是:position:absolute;里边是position:relative,那会是什么情况?按着原来的原则,absolute会参考body为布局原点,relative会参考他本来应该在的位置为布局原点,这时候其实就是参考外层左上角为布局原点。