定位(position)


一、CSS布局的三種機制

1、網頁布局的核心——就是用CSS來擺放盒子位置

2、CSS提供了3種機制來設置盒子的擺放位置,分別是普通流、浮動和定位,其中:

①普通流(標准流)

②浮動:讓盒子從普通流中浮起來——讓多個盒子(div)水平排列成一行

③定位:將盒子定在某一個位置,自由的漂浮在其他盒子的上面——CSS離不開定位,特別是后面的js特效

二、為什么使用定位

1、小黃色塊在圖片上移動,吸引用戶的眼球

2、當我們滾動窗口的時候,盒子是固定屏幕某個位置的

結論:要實現以上效果,標准流或浮動都無法快速實現

3、定位:將盒子定在某一個位置,自由的漂浮在其他盒子(包括標准流和浮動)的上面

4、三種布局機制的上下順序:

標准流在最底層(海底)——浮動的盒子在中間層(海面)——定位的盒子在最上層(天空)

三、定位詳解

(一)、定位也是用來布局的,它有兩部分組成:

定位 = 定位模式 + 邊偏移

(二)、邊偏移

1、簡單說,我們定位的盒子,是通過邊偏移來移動位置的

2、在CSS中,通過top、bottom、left和right屬性定義元素的邊偏移:(方位名詞)

邊偏移屬性 示例 描述
top top:80px 頂端偏移量,定義元素相對於其父元素上邊線的距離
bottom bottom:80px 底部偏移量,定義元素相對於其父元素下邊線的距離
left left:80px 左側偏移量,定義元素相對於其父元素左邊線的距離
right right:80px 右側偏移量,定義元素相對於其父元素右邊線的距離

 

 

 

 

 

 

3、定位的盒子有了邊偏移才有價值,一般情況下,凡是有定位地方必定有邊偏移

(三)定位模式(position)

1、在CSS中,通過position屬性定義元素的定位模式,語法如下:

選擇器 {position: 屬性值; }

2、定位模式是有不同分類的,在不同情況下,我們用到不同的定位模式

語義
static 靜態定位
relative 相對定位
absolute 絕對定位
fixed 固定定位

 

 

 

 

 

 

(1)靜態定位(static)——了解

①靜態定位是元素的默認定位方式,無定位的意思,它相當於border 里面的 none,不要定位的時候用

②靜態定位按照標准流特性擺放位置,它沒有邊移量

③靜態定位在布局時我們幾乎不用的

(2)相對定位(relative)——重要

①相對定位是元素相對於它原來在標准流中的位置來說的

②相對定位的特點:

●相對於自己原來在標准流中位置來移動的

●原來在標准流的區域繼續占有,后面的盒子仍然以標准流的方式對待它

(3)絕對定位(absolute)——重要

①絕對定位是元素相對於他父級元素來設置的位置

●完全脫標——完全不占位置;

●父元素沒有定位,則以瀏覽器為准定位(Document文檔)

●父元素要有定位

  ○將元素依據最近的已經定位(絕對、固定或相對定位)的父元素(祖先)進行定位;

 

②絕對定位的特點:(務必記住)

●絕對是以帶有定位的父級元素來移動位置,如果父級都沒有定位,則以瀏覽器文檔為准移動位置;

●不保留原來的位置,完全是脫標的

③定位口訣——子絕父相

子絕父相——子級是絕對定位,父級要用相對定位

④總結:

由於子元素,不占據位置,所以我們使用絕對定位;

由於父元素占據位置,不能影響后面元素的正常顯示,我們使用相對定位。

⑤分析:

●方向箭頭疊加在其他圖片上方,應該使用絕對定位,因為絕對定位完全脫標,完全不占位置;

●父級盒子應該使用相對定位,因為相對定位不脫標,后續盒子仍然以標准流的方式對待它;

  ○如果父級盒子也使用絕對定位,會完全脫標,那么下方的廣告盒子會上移,這顯然不是我們想要的。

⑥父級要占有位置,子級要任意擺放,這就是子絕父相的由來。

(4)固定定位(fixed)——重要

①固定定位是絕對定位的一種特殊形式:如果說絕對定位是一個矩形,那么固定定位就類似於正方形

●完全脫標——完全不占位置;

●只認瀏覽器可視窗口——瀏覽器可視窗口+邊偏移屬性  來設置元素的位置;

  ○跟父元素沒有任何關系;

  ○不隨滾動條滾動。

②提示:IE6等低版本瀏覽器不支持固定定位

 四、定位(position)的拓展

1、絕對定位的盒子居中

(1)注意:絕對定位/固定定位的盒子 不能通過設置 margin: auto 設置水平居中

(2)在使用絕對定位時要想實現水平居中:

①left:50%;  :讓盒子的左側移動到父級元素的水平中心位置;

②margin-left:-100px;  :讓盒子向左移動自身寬度的一半。

2、堆疊順序(z-index)

(1)在使用定位布局時,可能會  出現盒子重疊的情況。

(2)加了定位的盒子,默認后來者居上,后面的盒子會壓住前面的盒子。

(3)應用 z-index 層疊等級屬性可以調整盒子的堆疊順序。

(4)z-index 的特性如下:

①屬性值:正整數、負整數或0,默認值是0,數值越大,盒子越靠上;

②如果屬性值相同,則按照書寫順序,后來居上;

③數字后面不能加單位。

(5)z-index 只能應用於相對定位、絕對定位和固定定位的元素,其他標准流、浮動和靜態定位無效。

3、定位改變display屬性

(1)行內塊的特性,一行可以有多個,可以設置高度和寬度,大小是受內容的影響。

①可以用 inline-block 轉換為行內塊;

②可以用浮動 float 默認轉換為行內塊(類似,並不完全一樣,因為浮動是脫標的);

③絕對定位和固定定位也和浮動類似,默認轉換的特性 轉換為行內塊。

(2)一個行內的盒子,如果加了浮動、固定定位和絕對定位,不用轉換,就可以給這個盒子直接設置寬度和高度等。

(3)注意:

①浮動元素、絕對定位元素的都不會觸發外邊距合並的問題;(我們以前是用padding border overflow解決的);

②也就是說,我們給盒子改為了浮動或者定位,就不會有垂直外邊距合並的問題了。

 五、綜合演練

1、圓角矩形設置4個角

圓角矩形可以為4個角分別設置圓度,但是是有順序的

border-top-left-radius:20px;

border-top-right-radius:20px;

border-bottom-right-radius:20px;

border-bottom-left-radius:20px;

2、如果4個角,數值相同

border-radius:15px;

3、如果數值不同,我們也可以按照簡寫的形式,具體格式如下:

border-radius:左上角 右上角 右下角 左下角;

還是遵循的逆時針。

 六、定位小結

1、

定位模式 是否脫標占有位置 移動位置基准 模式轉換(行內塊) 使用情況
靜態static 不脫標,正常模式 正常模式 不能 幾乎不用
相對定位relative 不脫標,占有位置 相對自身位置移動 不能 基本單獨使用
絕對定位 完全脫標,不占有位置 相對於定位父級移動 要和定位父級元素搭配使用
固定定位fixed 完全脫標,不占有位置 相對於瀏覽器移動位置 單獨使用,不需要父級

 

 

 

 

 

 

2、注意:

(1)邊偏移需要和定位模式聯合使用,單獨使用無效;

(2)top 和 bottom 不要同時使用;

(3)left 和 right 不要同時使用。

七、網頁布局總結

1、標准流:

可以讓盒子上下排列或者左右排列

2、浮動

可以讓多個塊級元素一行顯示或者左右對齊盒子,浮動的盒子就是按照順序左右排列

3、定位

定位最大的特點就是有層疊的概念,就是可以讓多個盒子前后疊壓來顯示,但是每個盒子需要測量數值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM