CSS 相對定位,絕對定位理解

1.相對定位

position:relative;

<html>
    <head>
        <!--參考http://web.jobbole.com/84938/-->
        <meta charset="utf-8" />
        <title></title>
        <style>
            html, body, #father-body {
                height: 100%;
                width: 100%;
                background-color: #123456;
            }
            
            .item1, .item2, .item3 {
                width: 300px;
                height: 100px;
                background-color: #234567;
                margin: 20px;
            }
            
            .item2 {
                position: relative;
                /*top:80px;*/
                                /*left:80px;*/
                /*margin: 80px 0 0 80px;*/
            }
        </style>
    </head>

    <body>
        <div class="father-body">
            <div class="item1"></div>
                <div class="item2"></div>
                <div class="item3"></div>
            </div>
        </div>
    </body>
 </html>

效果如圖:

屏幕快照 2017-09-29 下午4.41.35.png

當使用margin: 80px 0 0 80px時

屏幕快照 2017-09-29 下午4.43.47.png

使用margin 這樣的屬性改變元素的位置會影響其他元素的位置,item3與item2上下間距不變,item3的縱坐標y增加了60

當使用top:80px; left:80px;

屏幕快照 2017-09-29 下午4.48.58.png

使用top right bottom left ,這樣屬性改變元素的位置的時候,不會影響其他元素的位置。
item2與item3重合了,item3的縱坐標y不變。

絕對定位

position:absolute;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
                margin:20px;
                height: 100%;
                width: 100%;
                background-color: #123456;
        }
        #body-div{
            padding:15px;
            width: 60%;
            background-color:#a0c8ff;
            border:1px solid #000000;
        }

        #body-div div{
            padding:10px;
            background-color:#fff0ac;
            border:1px solid #000000;
        }
    </style>
</head>
<body>
    <div id="body-div">
        <div class="item1">Box-1</div>
        <div class="item2">Box-2</div>
        <div class="item3">Box-3</div>
    </div>
</body>
</html>
屏幕快照 2017-09-29 下午5.01.08.png
為Box-2設置絕對定位屬性
.item2{
      position:absolute;
}
屏幕快照 2017-09-29 下午5.02.34.png

這個時候Box-3的位置會占據之前Box-2的位置。且Box-2和Box-3的左邊框會重合。且盒子的寬度會根據盒子內部的元素自適應。

當盒子設置了絕對定位但是沒有使用top right bottom left設置盒子的偏移量的時候,它仍會占據原先的位置。

那么當設置top right bottom left這些屬性時

設置下面的代碼:

.item2{
       position:absolute;
       top:0;
       right:0;
 }
屏幕快照 2017-09-29 下午5.05.37.png
當我們把直接父級元素設置為已定位的元素
 #body-div{
            padding:15px;
            width: 60%;
            background-color:#a0c8ff;
            border:1px solid #000000;
            position: absolute;
 }
屏幕快照 2017-09-29 下午5.10.40.png

由上可以得出兩個結論:
1.使用絕對定位的盒子以它的“最近”的一個“已經定位”的“祖先元素”為基準進行偏移(定位)。如果沒有已經定位的祖先元素,那么就會以瀏覽器窗口為基準進行定位。
2.決對定位的框從標準流中脫離,這意味著它們對其后的兄弟盒子的定位沒有影響。其它的盒子好像就當這個盒子(絕對定位的盒子)不存在一樣。

參考鏈接:http://blog.csdn.net/yisuowushinian/article/details/46038423

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,805評論 1 92
  • 當在這一個頁面上實現布局和定位有幾種不同的技術。使用哪種技術,很大程序上取決于內容和目標頁面,因為有很多技術比別人...
    lulu_c閱讀 1,100評論 0 5
  • 各種純css圖標 CSS3可以實現很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,688評論 0 8
  • CSS布局在整個前端開發中占據了大約50-70%的工作量,在遵循web規范的前提下,編寫合乎規范的前端代碼,實現結...
    FaithXiong閱讀 801評論 0 0
  • 在寫這篇讀后感時我還沒有完全聽完聽本下冊,但之前的內容已經足夠讓我醍醐灌頂,內容最具讓我震身的的就是找回幸福的狀態...
    上海九叔閱讀 476評論 0 0