傳說中的定位元素

2021-09-11 09:53:16 字數 3372 閱讀 5727

(1) static : 常規框,預設值。

(2) relative : 相對定位,在元素沒有定位之前的位置上進行定位,並且它原本所佔的空間仍為其保留。

(3) absolute : 絕對定位,在沒有設定left,top,bottom,right時,它將在沒有定位之前的位置上脫離文件流,不佔空間,後面的元素將會替代它的位置,並且有層級的概念。它總是在文件流的上面,除非手動設定z-index屬性。如果設定了left,top,bottom,right時,它將按照設定進行定位,如果它不是在乙個定位的父元素裡面(除static外),那麼它的起點將在視窗的左上角,反之,它的起點將在父元素的位置上進行定位。乙個行內元素,一旦設定了此屬性,則會轉變成塊元素。

(4) fixed : 固定定位,參照物是按照瀏覽器視窗定位,設定了fixed的元素就像被固定住了一樣,它不會隨著滾動條的滾動而滾動。乙個行內元素設定了此屬性後,將被轉變成塊元素。將乙個元素的position屬性設定為static,和不設定的效果是相同的。因為當不設定position屬性時,預設position屬性的值就是static。

示例**:

複製**

執行結果如下:

從執行結果可以看到,設定為position:static的元素,它的left和top,並不起作用。

元素按照原來的位置定位,並且不脫離文件流。

item1

relative

item3

複製**

執行效果如下:

如果在設定了position:relative;的元素中設定left,top,bottom,right值,它的層級就總是要比標準流元素高。

item1

relative

item3

複製**

執行結果如下:

從執行結果可以看出,背景色為紅色的div遮擋住了下面的div元素。如果紅色的div元素不想遮擋住下面的藍色div元素,可以設定z-index屬性來調整層級。

item1

relative

item3

複製**

執行結果如下:

relative的left,right,bottom,top都可能會引起溢位。

relative

複製**

執行結果如下:

導致溢位的原因,就是因為relative不脫離文件流。

設定為position:absolute;的元素,其定位的參照物是第乙個非static定位的父級元素,並且設定了absolute的元素,在沒有設定left,right,bottom,top的屬性值的情況下,元素並不會改變位置,但是卻脫離了文件流,並且有了z-index層級的概念,可以通過設定該屬性來調整層級。如果兩個元素同時設定了position:absolute;則後來者居上,按照元素的位置,越後面的層級越高。

item1

absolute

item2

複製**

執行結果如下:

當定位遇上了定位該怎麼定位吶?

複製**

執行效果如下:

fixed和absolute的定位效果非常類似,但是它們有著很大的區別。

absolute

fixed

複製**

執行結果如下:

從執行結果可以看出,設定為position:fixed;的元素並沒有參照它的父元素進行定位,而是在瀏覽器的左上角顯示,由此可見,fixed的元素是按照瀏覽器視窗定位的。

(1) 如果同時設定left,bottom,right,top時,那麼只有left和top值起作用。

(2) 如果同時設定left,bottom,right,top時,又想讓right或者bottom起作用,那麼可以將left設定為auto。

(3) 如果將left,bottom,right,top都設定為auto時,如果它上面沒有其他元素,相當於沒有進行設定。

(4) 如果元素設定為position:absolute,同時又設定margin-left和left時,則該元素距離左側的距離是margin-left + left的結果。

(5) 讓乙個元素垂直居中,如下所示:

複製**

(6) 通過fixed實現遮罩層,如下所示:

複製**

(7) 父元素包不住fixed元素,如下所示:

複製**

執行效果如下:

如果想fixed元素根據它的父元素定位,那麼就不能設定left,bottom,top,right值。

複製**

執行效果如下:

如果沒有設定left,right,bottom,top,那麼它們的預設值是auto。   (8) 一旦定位值為absolute或fixed,那麼高度將百分之百生效。fixed的百分比參照瀏覽器視窗計算,不管是否有父元素;absolute如果在乙個定位的父元素裡面,那麼則按照父元素計算後的值進行計算,父元素無法自適應定位元素的高度,**如下:

複製**

執行效果如下:

(9) fixed的另外乙個問題就是當在移動端使用position:fixed,製作遮罩層時會發現,在部分瀏覽器中,如果滾動內容,遮罩後面的的內容也會跟著滾動。那麼,要解決這個問題,可以使用乙個小技巧,

複製**
這樣的話,它就不會滾動了,因為fixed的高度是參照瀏覽器的高度;其實,最簡單的做法是,當顯示遮罩層時,給body加overflow:hidden;然後,關閉遮罩層時,再去掉這個樣式。

傳說中的MTU

通訊術語 最大傳輸單元 maximum transmission unit,mtu 是指一種通訊協議的某一層上面所能通過的最大資料報大小 以位元組為單位 最大傳輸單元這個引數通常與通訊介面有關 網路介面卡 串列埠等 網際網路協議允許ip分片,這樣就可以將資料報分成足夠小的片段以通過那些最大傳輸單元小...

傳說中的truncate html

學習用rails做blog的時候要用到rails的truncate功能。h truncate post.content,100,問題來了,將html截斷後出現不完整的tag,導致後續的文章排版都錯亂了。本來考慮是不是自己寫乙個,正在思考思路,結果祭起google,好嗎,已經有牛人寫了 簡單記錄一下 ...

傳說中的分頁6

set quoted identifier off goset ansi nulls on go 名稱 分頁儲存過程 使用示例 exec sp pageindex from stusources 2,10 注意 目前還沒有對輸入的引數進行嚴格的驗證 預設為輸入都是合法有效的 alter proc s...