一下內(nèi)容摘選于:http://www.blueidea.com/tech/web/2007/4601.asp 有時(shí)間自己去詳細(xì)看看,詳細(xì)你會(huì)明白的.
1.定位的專業(yè)解釋 相對定位(relative):對象不可層疊,依據(jù)left,right,top,bottom等屬性在正常文檔流中偏移自身位置。同樣可以用z-index分層設(shè)計(jì)。
2.定位的形象解釋 自私的相對定位(relative)
相對定位一個(gè)最大特點(diǎn)是:自己通過定位跑開了還占用著原來的位置,不會(huì)讓給他周圍的諸如文本流之類的對象。相對定位也比較獨(dú)立,做什么事它自己說了算,要定位的時(shí)候,它是以自己本身所在位置偏移的(相對對象本身偏移)。再拿前邊作比如來解,那么此時(shí)西瓜似乎是有魔法的,如果西瓜通過相對定位在水桶中偏移了你會(huì)看到一個(gè)現(xiàn)實(shí)生活中不存在的現(xiàn)象:水中有一個(gè)地方水凹下去了,周圍的水不能填補(bǔ)它,西瓜看起來在旁邊,如果攪動(dòng)一下桶中的水,那個(gè)凹的位置會(huì)發(fā)現(xiàn)改變(文本流對相對定位對象還存在影響),但是凹處到西瓜出現(xiàn)的距離始終保持一致。可見文本流與它之間還會(huì)互相影響,因?yàn)閷ο蟛]有真正脫離文本流,就像有兩個(gè)人在同一層樓水平移動(dòng)的過程中會(huì)有碰頭的機(jī)會(huì)。
實(shí)例強(qiáng)化對定位屬性的理解 相對定位對象會(huì)占據(jù)它原來位置,在下面實(shí)例中,沒有設(shè)定相對定位前,綠色小盒子是在藍(lán)色盒子左上角的,之前也設(shè)定了綠色小盒子的浮動(dòng)方式為左浮動(dòng),可以看到文本環(huán)繞在它右邊,但是后來用相對定位方法把綠色小盒子重定位到外面去了,它還占著自己原來位置,因?yàn)槟氵€可以看到文本流沒有發(fā)生自動(dòng)填補(bǔ)流動(dòng)。因此這種直接的相對定位方法較少用,因?yàn)橹囟ㄎ粚ο蠛笤瓉砦恢每樟艘粔K。相對定位常與絕對定位結(jié)合用,一般是給父級設(shè)定相對定位方式,子級元素就可以相對它進(jìn)行方便的絕對定位了(請注意看后面的實(shí)例)。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>相對定位對象會(huì)占據(jù)原有位置</title>
- <style type="text/css">
- <!--
- body {
- margin:0px;
- font-size: 9pt;
- line-height:12pt;
- margin-top: 150px;
- margin-left: 150px;
- }
- .box1 {
- background-color: #3CF;
- height: 200px;
- width: 200px;
- }
- .box2 {
- background-color: #6C6;
- height: 100px;
- width: 100px;
- position: relative;
- float: left;
- top:-120px;
- }
- -->
- </style>
- </head>
-
- <body>
- <div class="box1">
- <div class="box2"></div>
- [相對定位對象會(huì)占據(jù)原有位置]現(xiàn)在綠色小盒子是以子盒子形式存在藍(lán)色大盒子中,并設(shè)定了浮動(dòng)方式為左浮動(dòng),所以這些文字能環(huán)繞在它右邊,當(dāng)綠色小盒子用相對定位方法重定位到外邊去了,文字還是不能流入它的區(qū)域,即左上角空白區(qū)域,那是因?yàn)榫G色盒子還占用著它原來位置。</div>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>相對定位對象會(huì)占據(jù)原有位置</title><style type="text/css"><!--body {margin:0px;font-size: 9pt;line-height:12pt;margin-top: 150px;margin-left: 150px;}.box1 {background-color: #3CF;height: 200px;width: 200px;}.box2 {background-color: #6C6;height: 100px;width: 100px;position: relative;float: left;top:-120px;}--></style></head><body><div class="box1"><div class="box2"></div>[相對定位對象會(huì)占據(jù)原有位置]現(xiàn)在綠色小盒子是以子盒子形式存在藍(lán)色大盒子中,并設(shè)定了浮動(dòng)方式為左浮動(dòng),所以這些文字能環(huán)繞在它右邊,當(dāng)綠色小盒子用相對定位方法重定位到外邊去了,文字還是不能流入它的區(qū)域,即左上角空白區(qū)域,那是因?yàn)榫G色盒子還占用著它原來位置。</div></body></html>
相對定位的對象不可以重疊。這一點(diǎn)也許比較難理解,先來這樣理解吧,因?yàn)橄鄬Χㄎ坏膶ο駴]有脫離文本流,就像兩個(gè)還是住在同一層樓的人,任何時(shí)候,他們腳下踩的地方不可能被另一個(gè)人踩著的,如果可以就意味著兩個(gè)人共享一塊地方了。在下面的實(shí)例中,兩個(gè)小盒子都剛好排在大盒子上方,所以在大盒子中輸入的文字被擠到了下面。上面兩個(gè)盒子我再用相對定位的方法對調(diào)了它們的位置,當(dāng)前它們下方的空間其實(shí)不是自己的,也正因?yàn)樗鼈儧]有重疊,所以盒子上方還是有兩個(gè)盒子占用的空間,下面文字無法向上流動(dòng)(我已對盒子設(shè)定了浮動(dòng)屬性的了,如果不設(shè)定,即使有空間文本也不會(huì)往上流,上面盒子是塊級元素,會(huì)獨(dú)立占據(jù)一行)。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>相對定位對象不可層疊</title>
- <style type="text/css">
- <!--
- body {
- margin:0px;
- font-size: 9pt;
- line-height:12pt;
- margin-top: 150px;
- margin-left: 150px;
- }
- .box1 {
- background-color: #33CCFF;
- height: 200px;
- width: 210px;
- padding:5px;
- }
- .box2 {
- background-color: #66CC66;
- height: 100px;
- width: 100px;
- position: relative;
- float: left;
- left:100px;
- }
- .box3 {
- background-color: #CC99FF;
- height: 100px;
- width: 100px;
- position: relative;
- float: left;
- right:100px;
- }
- -->
- </style>
- </head>
-
- <body>
- <div class="box1">
- <div class="box2">我家在左邊</div>
- <div class="box3">我家在右邊</div>
- 相對定位對象是在正常文本流中移動(dòng)的,所以它的存在還是會(huì)影響文本流的布局, 如果是絕對定位,這些文本應(yīng)向上流入上方兩個(gè)盒子的底部了。
- </div>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>相對定位對象不可層疊</title><style type="text/css"><!--body {margin:0px;font-size: 9pt;line-height:12pt;margin-top: 150px;margin-left: 150px;}.box1 {background-color: #33CCFF;height: 200px;width: 210px;padding:5px;}.box2 {background-color: #66CC66;height: 100px;width: 100px;position: relative;float: left;left:100px;}.box3 {background-color: #CC99FF;height: 100px;width: 100px;position: relative;float: left;right:100px;}--></style></head><body><div class="box1"><div class="box2">我家在左邊</div><div class="box3">我家在右邊</div>相對定位對象是在正常文本流中移動(dòng)的,所以它的存在還是會(huì)影響文本流的布局, 如果是絕對定位,這些文本應(yīng)向上流入上方兩個(gè)盒子的底部了。</div></body></html>
給包含塊一個(gè)高度,或者說給定位對象的父級設(shè)定一個(gè)高度。不然也許顯示的結(jié)果并不是你想要的。在下面的例子中,如果你本意要實(shí)現(xiàn)下面效果:把小盒子在父盒子中的左上角垂直往下偏移,上方留出一塊區(qū)域,如果你刪除了box1的高度會(huì)怎么樣呢?自己測試一下吧。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>給包含塊一個(gè)高度</title>
- <style type="text/css">
- <!--
- body {
- margin:0px;
- font-size: 9pt;
- line-height:12pt;
- margin-top: 150px;
- margin-left: 150px;
- }
- .box1 {
- background-color: #33CCFF;
- width: 200px;
- height: 200px;/*如果不設(shè)定這個(gè)高度,也許顯示的結(jié)果并不是你想要的*/
-
- }
- .box2 {
- background-color: #CC99FF;
- height: 100px;
- width: 100px;
- position:relative;
- bottom:-100px;
- }
- -->
- </style>
- </head>
-
- <body>
- <div class="box1">
- <div class="box2"></div>
- </div>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>給包含塊一個(gè)高度</title><style type="text/css"><!--body {margin:0px;font-size: 9pt;line-height:12pt;margin-top: 150px;margin-left: 150px;}.box1 {background-color: #33CCFF;width: 200px;height: 200px;/*如果不設(shè)定這個(gè)高度,也許顯示的結(jié)果并不是你想要的*/}.box2 {background-color: #CC99FF;height: 100px;width: 100px;position:relative;bottom:-100px;}--></style></head><body><div class="box1"><div class="box2"></div></div></body></html>
放置相對定位對像到可視區(qū)外不會(huì)出現(xiàn)滾動(dòng)條。此現(xiàn)象很好理解,因?yàn)橄鄬Χㄎ粚ο笤瓉砦恢脹]有變,原來位置沒有出去滾動(dòng)條就不會(huì)出現(xiàn)。在下面實(shí)例中,如果你縮小瀏覽器窗口,相對定位的對象還會(huì)出現(xiàn)完全消失的情況呢。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>放置相對定位對像到可視區(qū)外不會(huì)出現(xiàn)滾動(dòng)條</title>
- <style type="text/css">
- <!--
- body {
- margin:0px;
- font-size: 9pt;
- line-height:13pt;
- }
- .box{
- background-color: #996699;
- height: 200px;
- width: 270px;
- background-image: url(http://farm1.static.flickr.com/48/172522117_410a1e87c1_m.jpg);
- background-repeat: no-repeat;
- background-position: center center;
- position: relative;
- left: 900px;
- }
- .box2{
- height: 200px;
- width: 270px;
- position:absolute;
- border: 1px dashed #996699;
- }
- -->
- </style>
- </head>
-
- <body>
- <div class="box2">虛線框是右邊盒子原來的位置,即用了相對定位后,把對象重新定位到了右邊,但對象的位置其實(shí)還在這里,或者說對象實(shí)際上并沒有越出瀏覽器可視區(qū)域,所以不會(huì)出現(xiàn)滾動(dòng)條。<br />
- 我說過相對定位的的盒子原有位置是不會(huì)被占用的,但我為什么可以在這里寫說明呢,這是因?yàn)槲矣昧私^對定位,我只是為了方便說明才這樣做的,請不要誤解了。</div>
- <div class="box"></div>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>放置相對定位對像到可視區(qū)外不會(huì)出現(xiàn)滾動(dòng)條</title><style type="text/css"><!--body {margin:0px;font-size: 9pt;line-height:13pt;}.box{background-color: #996699;height: 200px;width: 270px;background-image: url(http://farm1.static.flickr.com/48/172522117_410a1e87c1_m.jpg);background-repeat: no-repeat;background-position: center center;position: relative;left: 900px;}.box2{height: 200px;width: 270px;position:absolute;border: 1px dashed #996699;}--></style></head><body><div class="box2">虛線框是右邊盒子原來的位置,即用了相對定位后,把對象重新定位到了右邊,但對象的位置其實(shí)還在這里,或者說對象實(shí)際上并沒有越出瀏覽器可視區(qū)域,所以不會(huì)出現(xiàn)滾動(dòng)條。<br />我說過相對定位的的盒子原有位置是不會(huì)被占用的,但我為什么可以在這里寫說明呢,這是因?yàn)槲矣昧私^對定位,我只是為了方便說明才這樣做的,請不要誤解了。</div><div class="box"></div></body></html>
定位的特殊值情況。如果定位設(shè)置是這樣的:position:relative ,right:200px, left:10px會(huì)出現(xiàn)什么情況呢?一邊叫對象向右偏移10px,另一邊又叫對象向左偏移200px,到底是聽那邊的呢,還是那個(gè)先,那個(gè)后呢。針對這種矛盾情況,CSS規(guī)定只聽左邊的left,而右邊怎么設(shè)置都被重定為-left,即-left =right。上下值top與bottom矛盾的話,就以top為準(zhǔn),所以在下面的實(shí)例中,你如何改變r(jià)ight的值,對象位置不會(huì)發(fā)生改變的。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>定位的特殊值情況</title>
- <style type="text/css">
- <!--
- body {
- margin:0px;
- font-size: 9pt;
- line-height:12pt;
- margin-top: 150px;
- margin-left: 150px;
- }
- .box1 {
- background-color: #33CCFF;
- width: 200px;
- height: 200px;
- }
- .box2 {
- background-color: #CC99FF;
- height: 100px;
- width: 100px;
- position:relative;
- right:200px;/*此值總被認(rèn)為是-left=-10px,所以你怎么改它都不會(huì)影響到布局*/
- left:10px;/*這里設(shè)定了兩個(gè)定位值,但是它們是矛盾的,所以此時(shí)將以左邊為準(zhǔn),如果是上下類型錯(cuò)誤,則以上邊定位數(shù)值為準(zhǔn)*/
-
- }
- -->
- </style>
- </head>
-
- <body>
- <div class="box1">
- <div class="box2"></div>
- </div>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>定位的特殊值情況</title><style type="text/css"><!--body {margin:0px;font-size: 9pt;line-height:12pt;margin-top: 150px;margin-left: 150px;}.box1 {background-color: #33CCFF;width: 200px;height: 200px;}.box2 {background-color: #CC99FF;height: 100px;width: 100px;position:relative;right:200px;/*此值總被認(rèn)為是-left=-10px,所以你怎么改它都不會(huì)影響到布局*/left:10px;/*這里設(shè)定了兩個(gè)定位值,但是它們是矛盾的,所以此時(shí)將以左邊為準(zhǔn),如果是上下類型錯(cuò)誤,則以上邊定位數(shù)值為準(zhǔn)*/}--></style></head><body><div class="box1"><div class="box2"></div></div></body></html>
綜合實(shí)例見證定位的魅力 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>相對定位和絕對定位實(shí)例--作者:唐國輝</title><style type="text/css"><!--*{margin:0px;padding:0px;}body {margin:10px;font-size: 13px;}a:link {color: #666;text-decoration: none;/*去除鏈接下劃線*/}a:visited {color: #666;text-decoration: none;}a:hover {color: #F90;}h3 {color: #FFF;background-color: #F90;width: 100px;padding-top:3px;text-align:center;}ul {width: 300px;border-top: 1px solid #F60;/*使其上邊有一線條,與標(biāo)題h3吻合*/}ul li {padding:5px;border-bottom: 1px solid #CCC;list-style:none;/*去除列表樣式,這對于標(biāo)準(zhǔn)瀏覽很重要*/}a {position: relative;/*設(shè)置其定位方法為相對定位,等一下內(nèi)部信息面板就可以相對它定位*/display:block;/*讓鏈接以塊狀呈現(xiàn),這樣不用點(diǎn)中鏈接文字就可以響應(yīng)鏈接*/}a div {display: none;/*初始化信息面板不顯示*/}a:hover {background:#fff;}/*IE7以下版本A狀態(tài)偽類bug*/a:hover div {position: absolute;padding:5px;display:block;width: 245px;/*只給出寬度,高讓它隨內(nèi)容多少自動(dòng)調(diào)整*/left:150px;/*這是相對父級A的定位*/top: 20px;border: 1px solid rgb(91,185,233);background-color: rgb(228,246,255);z-index:999;/*把信息面板提到一個(gè)較高的位置,使鏈接文字過長時(shí)不會(huì)與面板重疊,但這只對FF有效*/}a img {width:80px;height:80px;border:none;/*去除圖片邊框,默認(rèn)情況下,鏈接內(nèi)的圖片在標(biāo)準(zhǔn)瀏覽器會(huì)出現(xiàn)邊框*/display:block;position: absolute;/*用絕對定位抽離正常文本流,不然在設(shè)計(jì)的時(shí)候考慮到不同瀏覽器正常顯示會(huì)更麻煩*/top:5px;/*這里的5px是與信息面板大盒子的填充一樣的*/left:5px;}dl {width: 160px;float:right;color: #999;line-height:20px;}dl dd span {font-weight: bold;color: #639;}--></style></head><body><h3>最新單曲</h3><ul><li><a href="#">01 愛的文身 黃圣依<div><img src="http://imgcache.qq.com/music/photo/singer/54/singerpic_5554_0.jpg" alt="" /><dl><dd><span>歌名:</span>愛的文身</dd><dd><span>歌手:</span>黃圣依</dd><dd><span>介紹:</span>黃圣依唱片主打歌的確是她個(gè)人的內(nèi)心寫照,《愛的文身》由香港音樂大師金培達(dá)作曲,制作人陳少琪親自填詞。</dd></dl></div></a></li><li><a href="#">02 累了 阿信<div><img src="http://imgcache.qq.com/music/photo/singer/47/singerpic_6547_0.jpg" alt="" /><dl><dd><span>歌名:</span>累了</dd><dd><span>歌手:</span>阿信</dd><dd><span>介紹:</span>青春校園偶像劇----【熱情仲夏】片尾曲</dd></dl></div></a></li><li><a href="#">03 漫漫 慢慢 阿朵<div><img src="http://imgcache.qq.com/music/photo/singer/61/singerpic_6361_0.jpg" alt="" /><dl><dd><span>歌名:</span>漫漫 慢慢</dd><dd><span>歌手:</span>阿朵</dd><dd><span>介紹:</span>阿朵搶聽版最新單曲《漫漫 慢慢》讓你認(rèn)識(shí)阿朵柔情的一面,展現(xiàn)阿朵百變的風(fēng)格。</dd></dl></div></a></li><li><a href="#">04 我懷念的 孫燕姿<div><img src="http://imgcache.qq.com/music/photo/singer/9/singerpic_109_0.jpg" alt="" /><dl><dd><span>歌名:</span>我懷念的</dd><dd><span>歌手:</span>孫燕姿</dd><dd><span>介紹:</span>令人感同身受的抒情歌,在故事性的架構(gòu)中,有著平凡但又能扣人心弦的情感,是一首高度共鳴的抒情歌。</dd></dl></div></a></li><li><a href="#">05 聽,花期越來越近 后弦<div><img src="http://imgcache.qq.com/music/photo/singer/33/singerpic_4733_0.jpg" alt="" /><dl><dd><span>歌名:</span>花期越來越近</dd><dd><span>歌手:</span>后弦</dd><dd><span>介紹:</span>后弦參與《花開的聲音》這個(gè)舞臺(tái)劇里的一部分,邀請了后弦去演唱這首歌,此歌就是為舞臺(tái)劇《花開的聲音》而創(chuàng)作。</dd></dl></div></a></li></ul></body></html>