亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

探索為什么相對定位的元素的父輩元素一定要設為position:relative

探索為什么相對定位的元素的父輩元素一定要設為position:relative

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>相對參照元素進行定位</title><style type="text/css">div{border:2px red solid;}#box1{? ? width:200px;? ? height:200px;? ? position:relative;? ? ? ? ??}#box2{? position:absolute; top:20px; left:30px;? ? ? ? ??}/*下面是任務部分*/#box3{? ? width:200px;? ? height:200px;? ? position:absolute; ? ? ??}#box4{? ? width:99%;? position:absolute;? ? bottom:0; ? ??}/*下面是觀察部分*/#box5{? ? width:200px;? ? height:200px;? ? position:absolute;? ? ? ? ??}#box6{? ? ?position:absolute; top:20px; left:30px;? ? ? ? ??}</style></head><body><div id="box1"> <div id="box2">相對參照元素進行定位</div></div><h1>下面是任務部分</h1><div id="box3">? ? <img src="http://img1.sycdn.imooc.com//541a7d8a00018cf102000200.jpg">? ? <div id="box4">當我還是三年級的學生時是一個害羞的小女生。</div></div><br/><br/><h2>下面是觀察部分</h2><div id="box5">? ? <div id="box6">相對參照元素進行定位</div></div></body></html>結果圖:我試過將設置定位的元素及其父輩元素都設定為absolute,如圖所示,她們與其他父輩的兄弟元素不會重疊,于是我就以為可以這樣組合。但是,當我把box3和box4都設為absolute時,任務部分與觀察部分就重疊起來,所以用relative去設置父輩元素,是為了避免這種情況出現,其實我的理解是,只有定位脫離了文檔流,那么后面元素的定位就會收到影響,不知道我這樣的理解對不對
查看完整描述

4 回答

?
blovetu

TA貢獻319條經驗 獲得超234個贊

其實絕對定位absolute的參照對象是“離它最近的已定位的祖先元素”,這句話里有兩個關鍵,

一個是“離它最近的祖先元素”,意思是那個參照元素不一定是父元素,也可以是它的爺爺、爺爺的爺爺等等,如果它的祖先里同時有2個及以上的定位元素,就參照離它最近的一個元素定位

還有一個是“已定位”,這個定位也不一定非要是相對定位,也可以是絕對定位,為什么一般都是用相對定位呢,因為相對定位的特性是雖然它定位了,就算給了偏移量它離開了原來的地方,但是它原來占的地方也不會讓出來的,這樣的好處是原來在它周圍的其他元素不會因為它的離開而改變位置而使頁面亂套,所以用相對定位是非常合適的(如果你另有其他需要,祖先元素絕對定位也不是不可以)

查看完整回答
7 反對 回復 2016-07-19
?
weibo_有土有木木木木_03146994

TA貢獻1條經驗 獲得超2個贊

理解是對的,相對定位和絕對定位的區別就是一個是脫離了文檔流,一個沒有脫離文檔流,相對定位是相對于自身定位,而絕對定位是相對于自身的最近的父輩有絕對定位或相對定位的元素進行定位.,要是父輩都沒有絕對定位或者相對定位,就會相對于根元素進行(body,html)進行定位..當父級設置了絕對定位之后,子級的絕對定位也會受父級絕對定位的影響..所以一般為了讓父級元素不懂,一幫都用父級元素進行相對定位,所以你的理解是正確的.

查看完整回答
2 反對 回復 2016-07-18
?
慕客學渣會總瓢把子3201537

TA貢獻20條經驗 獲得超29個贊

后面元素會受到影響。但是后面元素的定位受到到影響。我不知道怎么理解你。其實你多做做多看看就知道了。我一開始也不是特別明白。用relative,absolute去設置父輩元素時,它的子元素設置absolute時就是相對父元素偏移,下面針對你的問題一一分析吧。

1“我試過將設置定位的元素及其父輩元素都設定為absolute,如圖所示,她們與其他父輩的兄弟元素不會重疊”父輩absolute,子元素absolute,子元素是相對已經定位的父元素定位。只要父元素有定位屬性,子元素absolute都會相對父元素定位,如果父元素沒有定位屬性,則子元素absolute相對html(也就是可視窗口)定位。

2“當我把box3和box4都設為absolute時,任務部分與觀察部分就重疊起來”如果他們的父級沒有定位,則他們是相對窗口也即使html定位的。若位移距離一樣就會重疊(看不到你的html代碼。不好說)

3“只有定位脫離了文檔流,那么后面元素的定位就會收到影響”搞清楚他們相對定位的關系。就OK了。不存在這個東東。如果他們都是absolute屬性,并且把位移距離都設置0。四個會重疊在一起。因為他們都是相對HTML定位的。

最好把代碼都貼出來。這個定位關系你去網上搜搜吧。弄懂就OK了。多做做,多實驗。

希望能幫到你。哈哈。頭都大了,看不見你的HTML代碼。本來不想回答了??墒谴蛄诉@么多字。不忍心。

查看完整回答
2 反對 回復 2016-07-18
?
ahao430

TA貢獻35條經驗 獲得超41個贊

理解是對的。absolute會脫離文檔流,而relative不會。你把box3和box4都設成absolute,整個任務部分不占據文檔流,下面的觀察部分擠上來了,所以重疊在一起。而box3設置成relative,就會依然占據文檔流位置。

而同樣脫離文檔流,float元素卻會依然占據父元素中的位置,對兄弟元素造成影響。但他實際上已經脫離文檔流了,不會撐起父元素高度,這個要注意。

absolute一般和relative配合使用,但是也可單獨使用。對box3不作處理,單獨對box4設置absolute,box4會脫離文檔流,但位置還是原來的位置。這時可以用margin來移動box4的位置。如果用top,left,就會向上查找relative,找不到就相對于body定位。

關于這些,建議看看慕課上張鑫旭大神的css深入理解系列課程,看完會很有收獲。

查看完整回答
反對 回復 2016-07-24
  • 4 回答
  • 3 關注
  • 5001 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號