body的子元素的定位問題

2021-05-07 11:33:05 字數 1774 閱讀 7218

執行**

如我們所看到的一樣,絕對居中實現了!但我要考究的是那個絕對定位的div究竟是以哪個元素作為參照物呢?!書上都說了,是以乙個被定位的祖先元素為參照物,其position值為relative,absolute,fixed!我們逐個試一下!

執行**

十字架貼到正上方去!

執行**

哇,好神奇啊,這次是貼到左上角中去!我猜測是body會根據更上級的元素定位,由於我們沒有為body設定偏移量(top與left),遊覽器會使用預設值,如top:0,left:0,可能隨遊覽器的不同而不同的……但如果給的預設值相同的話,那麼怎樣解釋上面body的現象呢?先不管了,看下一例子:

執行**

還是貼到左上角去!

既然這樣,我們看看body的父元素html

執行**

貼到左上角去……

執行**

這個和body一樣是正上方,那html大家應該能猜到吧!

執行**

完了嗎?!未完,我們還有兩個特例沒有試!

執行**

執行**

這兩次,它們就乖乖居中了!那麼這兩個div是相對誰定位呢?!市面上的書(書名我就不說了,畢竟是我的入門書)一般都是這樣說的,上網搜也是這樣說的——「absolute:將物件從文件流中拖出,使用left,right,top,bottom等屬性相對於其最接近的乙個最有定位設定的父物件進行絕對定位。如果不存在這樣的父物件,則依據body,即根據瀏覽器視窗。」真的這樣嗎?!

執行**

附上試題

將如下影象重構,要求在頁面上水平垂直居中!分別用2個div,3個div,5個div實現!

這是個正的十字架,寬是50px;長是150px

兩個div的見第乙個執行框

這是三個div的

選擇了遠方,便只顧風雨兼程;目標是地平線,留給世界的是如風的背影!

執行**

三個div的另一種解法

執行**

五個div的第一種解法

執行**

五個div的第二種解法

執行**

******************************==華麗的分界線******************************====

回 fishkuro :

這要看情況了!但你的參照物必須是父級元素或祖先元素,它們有乙個是定位元素(當然不包括我本文提到的極端情形,body與html作參照物時,不能為定位元素。)

然後是子元素是絕對定位元素或是相對定位元素,但無論它是哪種,如果沒有設定top,left,bottom與right任何乙個,它和普通元素無異,一樣受文件流影響。

執行**

但設定於top等定位屬性隨便乙個……

執行**

top為正數,會讓元素向上移動,反之亦然。

執行**

top為正數,會讓元素向下移動,反之亦然。

而margin的參照物永遠為自己,就像position:relative那樣!。如果你利用margin來移動自身,儘管你四個方向都設定,它會優先考慮左上角方向!

這是最後一種情形的立體效果,下面的平面是其祖先定位元素,上面懸浮的長方體是相對定位子元素,被從文件流中拖出來,我們可以用margin讓它移動!但那個坑,文件流是填不了它的,它會像幽靈一樣佔著個空間!over!

img標籤不能直接作為body的子元素

前幾天在一本教材上看到關於html標籤巢狀規則一節的時候,看到這麼一句話,把影象作為body元素的子元素直接插入到頁面中,這樣是不妥的,一是結構巢狀有誤,二是影象控制不方便。後面還給了一段 演示如下 當時我很不理解,難道我這些年的做法都是錯誤的嗎?上網查了好多資料也沒查出所以然,跟好友交流一下得到了...

關於子元素的absolute定位

關於子元素 如div 在父元素 如div 中的定位問題 假設現有html 如下 class div1 class div2 test 想讓div2在div1中實現底部居中的效果,查詢資料發現關鍵步驟 css 是 div div2 在一篇文章看到以下內容,解釋得很清楚 position absolut...

HTML中body元素的屬性

body元素的屬性 屬性描述 text 設定頁面文字顏色 bgcolor 設定頁面背景顏色 background 設定頁面背景影象 bgproperties 設定頁面的背景影象為固定狀態 不隨頁面的滾動而滾動 link 設定頁面預設的鏈結顏色 alink 設定滑鼠正在單擊時的鏈結顏色 vlink 設...