首頁 > web前端 > css教學 > 詳談css中的定位

詳談css中的定位

高洛峰
發布: 2017-02-11 11:57:28
原創
1518 人瀏覽過

  css中的元素默認情況下按照普通流進行排列,有兩種情況可以改變元素的排列方式,一種方式是浮動,在前面的文章中已經詳細闡述過,另外一種就是現在要討論的定位屬性Position,Position屬性有四個值,分別為static、relative、absolute、fixed,定位元素透過屬性left和top來控制定位元素的位置,預設為0。我們將在下面的內容中分別四個屬性值的用法和差異。

  一. static(靜態定位)

  static是position屬性的預設值。表示沒有定位,元素出現在正常的流中。

 

  二. relative(相對定位)

  產生相對定位的元素,相對於其正常位置進行定位。

  看以下案例:

  html代碼:

<p class="father">
    <p class="son">son</p></p>
登入後複製

 〜㟎

  程式碼解釋:正常情況下,class名為son的p出現在以下區域,下面試試看如果給這個元素相對定位:

  css代碼:

.father{
    width: 500px;
    height: 500px;
    background: pink;
    margin: 0 auto;
}.son{
    width: 200px;
    height: 200px;
    background: lavender;
    margin: 0 auto;
}
登入後複製

详谈css中的定位

  效果如下:

  效果如下:

🀜 ,原因是因為relative是相對於其自身的位置進行定位的,並且沒有脫離文檔流,實際上如果一個元素設置了相對定位並且給了left:0;top:0;之後對該元素並沒有任何影響。我們繼續來看如果left值和top值不為0的時候會如何:

  css代碼:

.son{
    width: 200px;
    height: 200px;
    background: lavender;
    margin: 0 auto;
    position: relative;
    left: 0;
    top: 0;
}
登入後複製
详谈css中的定位

 『㟎<🎀存在的位置,因為給了屬性left為50px,屬性top為20px,所以會相對於該元素本身應該存在的位置(也就是紅線框的位置)向左偏移50px,向上偏移20px,到如圖所示的位置。

 

  三. absolute(絕對定位)

  首先,絕對定位元素會脫離文檔流,其次,我們來分析絕對定位元素是根據什麼來進行定位的,絕對定位元素首先會找其距離最近的定位(static除外)的父級元素,如果沒有定位父級元素,則會一直往上找,直到根元素html,也就是說絕對定位元素如果沒有定位父級元素,則會相對於html來進行定位。

  我們來看如下案例:

  html代碼:详谈css中的定位

.son{
    width: 200px;
    height: 200px;
    background: lavender;
    margin: 0 auto;
    position: relative;
    left: 50px;
    top: 20px;
}
登入後複製

 『

  效果分析:

    絕對定位元素會脫離文檔流,後面定位的會覆蓋前面定位的,所以son2蓋在son1上面了。 son1和son2沒有定位父級,所以相對於根元素html來定位。如果有定位元素又會怎麼樣,請看如下程式碼:

  css程式碼:

<p class="father">
    <p class="son1">son1</p>
    <p class="son2">son2</p></p>
登入後複製

  效果如下:🎀 ,所以son1和son2相對於father進行定位,因為son2是後來定位的所以son2覆蓋在了son1的上面。因為相對定位的特性,所以相對定位常用來作為絕對定位的包含盒。

 

  四. fixed(固定定位)

  很多時候頁面中需要用到固定定位,比如說頁面右下角的回到頂部按鈕等。固定定位就是將元素根據瀏覽器視窗的大小始終固定在這個地方,即使頁面滑動,也不影響它的位置。我們來看以下案例:

  html程式碼:

.father{
    width: 500px;
    height: 500px;
    background: pink;
    margin: 0 auto;
}
.son1{
    width: 150px;
    height: 150px;
    background: lavender;
    margin: 0 20px;
    position: absolute;
    left: 0px;
    top: 0px;
}
.son2{
    width: 150px;
    height: 150px;
    background: skyblue;
    margin: 0 20px;
    position: absolute;
    left: 0px;
    top: 0px;
}
登入後複製
详谈css中的定位

  css程式碼:

.father{
    position: relative;
    width: 500px;
    height: 500px;
    background: pink;
    margin: 0 auto;
}.son1{
    width: 150px;
    height: 150px;
    background: lavender;
    margin: 0 20px;
    position: absolute;
    left: 0px;
    top: 0px;
}.son2{
    width: 150px;
    height: 150px;
    background: skyblue;
    margin: 0 20px;
    position: absolute;
    left: 50px;
    top: 50px;
}
登入後複製

.  給按鈕一個固定定位,如下:

  css代碼:

<body>
    <p class="backTop">top</p></body>
登入後複製

  效果如下:详谈css中的定位

详谈css中的定位

  即使隨著頁面的滾動,按鈕的位置也不會改變。頁面中許多廣告區域,即使頁面滾動,廣告的位置始終在那兒,這也是利用固定定位實現。注意,固定定位元素也是脫離文檔流的。

 

  五. 總結

  對於浮動的幾種情況,我們只需要從兩方面來考慮,一方面是定位元素根據什麼來進行定位的問題,另一方面是定位元素是否脫離文檔流的問題(關於脫離文檔流的問題此處不多加闡述)。只要這兩方面理解透徹了就很容易明白定位了,我們接下來對幾種定位來做一下總結:

  

position:static(靜態定位) fixed(固定定位) relative(相對定位) absolute(絕對定位)

static:position的預設值,相當於沒有定位。不脫離文檔流,佔據頁面空間。

relative:位置相對於自身的位置。不脫離文檔流,佔據頁面空間。

absolute:位置相對於已定位的父級元素。脫離文檔流,不佔據頁面空間。

fixed:位置相對於瀏覽器視窗。脫離文檔流,不佔據頁面空間。

 更多詳談css中的定位 相關文章請關注PHP中文網!


 

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板