在前端網頁佈局中,在同一平面上佈局,咱們大都採用float屬性來定位網頁元素的位置。可是涉及到彈出層、浮層、頁面廣告插件等等,都須要CSS 中的position屬性來定位了,對於初學者來講常常分不清楚是應該用position屬性的absolute值、relative值、fixed值等 等,下面咱們就position屬性基本的這三個值的用法作一些簡單的介紹,但願對初學者有些幫助。css
一、position的absolute(絕對定位)html
在這裏position的absolute絕對定位咱們分兩類來說:前端
A:給元素定義了position:absolute,其父框架沒有定義任何position屬性。此時的絕對定位就是相對於頁面四周最邊緣來進行定位 的,位置將依據瀏覽器左上角的0點開始計算,絕對定位使元素與文檔流無關,所以不佔據空間。元素的位置經過 "left", "top", "right" 以及 "bottom" 屬性進行規定。其位置不受父框架的影響,只以頁面四周邊緣開始計算。代碼以下:web
<!doctype html><html><head><meta charset="utf-8"><title>position</title><style type="text/css">.demo{position:absolute; left:100px; top:200px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}.all{width:800px; height:800px; margin-left:150px; margin-top:50px; background:#000;}</style></head><body><div ><div >position:absolute;<br />left:100px;<br />top:200px;<br /></div></div></body></html>
效果以下圖:編程
B: 給元素定義了position:absolute,其父框架定義了position:absolute\position:relative \position:fixed屬性。此時的絕對定位就是相對於父框架最邊緣最邊緣來進行定位的,絕對定位使元素與文檔流無關,所以不佔據空間。元素的位 置經過 "left", "top", "right" 以及 "bottom" 屬性進行規定。其位置只在父框架內作變化,代碼以下:瀏覽器
<!doctype html><html><head><meta charset="utf-8"><title>position</title><style type="text/css">.demo{position:absolute; left:100px; top:200px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}.all{width:800px; height:800px; margin-left:150px; margin-top:50px; background:#000; position:relative}</style></head><body><div ><div >position:absolute;<br />left:100px;<br />top:200px;<br /></div></div></body></html>
效果以下圖框架
因此,若是頁面元素的定位,想要定義在父元素內,而不受顯示器分辨率,瀏覽器窗口大小等限制時,建議採用B種方案。工具
二、position的relative(相對定位) 佈局
若是對一個元素進行相對定位,首先它將出如今它所在的位置上。而後經過設置垂直或水平位置,讓這個元素「相對於」它的原始起點進行移動。(再一點,相對定位時,不管是否進行移動,元素仍然佔據原來的空間。所以,移動元素會致使它覆蓋其餘框)。post
relative的確是相對於本身來定位的,父DIV設置了position:relative 沒有給出值,它自身是沒有效果的
可是對於它的子元素起到了參照做用
三、position的fixed fixed老是以body爲定位時的對象,老是根據瀏覽器的窗口來進行元素的定位,經過"left"、 "top"、 "right"、 "bottom" 屬性進行定位。
關於position用法貌似還有不少,小編語言組織能力不是太好,總結一下用法:
當你須要作一個有下拉二級菜單效果時,父元素你須要position:relative,而裏面的下拉元素則須要position:absolute。
當你須要作一個頁面漂浮的廣告,或者作一個返回頁面頂端的按鈕是,你須要position:fixed。
通 常咱們使用position:absolute;position:relative進行絕對定位佈局,經過CSS進行定義定位,DIV佈局HTML,注 意什麼地方使用position:relative,什麼地方使用position:absolute進行定位,同時不要忘記使用left、right、 top、bottom的配合定位具體位置。絕對定位若是父級不使用position:relative,而直接使用position:absolute絕 對定位,這個時候將會以body標籤爲父級,使用position:absolute定義對象不管位於DIV多少層結構,都將會被拖出 以<body>爲父級(參考級)進行絕對定位。絕對定位很是好用,但切記不要濫用,什麼地方都用,這樣有時會懶得計算距離上、下、左、右間 距,同時可能會形成CSS代碼臃腫,更加經驗適當使用,用於該使用地方。
在絕對定位時候咱們可使用css z-index定義css層重疊順序。
同時left、right、bottom、top的數值,可使用(Photoshop)PS切片工具獲取準確的數值。
末 了,小編在提醒一句,若是你在你的父DIV裏面的子DIV使用了position:absolute屬性定位,而父DIV沒有作任何定義(父DIV裏面已 經被其餘元素填充佔據),還想要子DIV定義起到做用,這個時候子DIV你能夠不用left、top、right、bottom來定義,可使用 margin-top、margin-left來定義,可是此種方法在ie6/7下和ie8/9/10/十一、火狐、谷歌下面的位置是不同的,針對 ie6/7你須要用到css Hack,代碼以下:
<!doctype html><html><head><meta charset="utf-8"><title>position</title><style type="text/css">.demo{position:absolute; margin-left:100px; margin-top:200px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}.all{width:600px; height:600px; margin-left:150px; margin-top:50px; background:#000;}</style></head><body><div ><img src="1.jpg" width="600" height="600" /><div >position:absolute;<br />margin-left:100px;<br />margin-top:200px;<br /></div></div></body></html>
效果以下圖
使用CSS Hack以後 代碼:
<!doctype html><html><head><meta charset="utf-8"><title>position</title><style type="text/css">.demo{position:absolute; margin-left:100px; margin-top:-400px;*margin-top:200px;*margin-left:-500px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}.all{width:600px; height:600px; margin-left:150px; margin-top:50px; background:#000;}</style></head><body><div ><img src="1.jpg" width="600" height="600" /><div >position:absolute;<br />margin-left:100px;<br />margin-top:200px;<br /></div></div></body></html>
在各個版本的瀏覽器下的 效果以下
此種方法最好不要使用 在不一樣版本瀏覽器下須要來回的用CSS Hack調整!
時長: 45分鐘
1DIVCSS視頻教程之position定位屬性在線觀看,1DIVCSS視頻教程之position定位屬性
v.ku6/show/XIal-bWyj... 2015-1-3