久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Div+Css網(wǎng)頁(yè)布局之定位篇--Postion屬性詳解

 悟靜 2009-10-17
Div+Css網(wǎng)頁(yè)布局之定位篇--Postion屬性詳解(2009-05-22 10:59:13)

    Div+Css網(wǎng)頁(yè)布局一直以來(lái)是用Css制作網(wǎng)站的精華,,一個(gè)好的網(wǎng)站多半是由于其合理而有意義的布局使得網(wǎng)站更具表現(xiàn)力。

    正由于其是精華因此它也成為了Css學(xué)習(xí)的一個(gè)重點(diǎn)和難點(diǎn),。特別是用Position 屬性布局的問(wèn)題一直是Css新手的一個(gè)難點(diǎn),,因?yàn)榻^對(duì)定位和相對(duì)定位的書(shū)面解釋語(yǔ)通常說(shuō)得比較抽象,并且里面包含一些專(zhuān)業(yè)術(shù)語(yǔ),,因此初學(xué)者看起來(lái)會(huì)比較吃力,,比較難懂。

    因此我在此所談?wù)摰氖窃诹谐鰰?shū)面表達(dá)的同時(shí),,用圖片和實(shí)際情況給大家一種更加直觀明了的介紹,,這樣可以讓大家從根本上理解和鞏固Position的含義。當(dāng)你真正理解了Position屬性的定義之后,,我相信聰明的你定可以將Position屬性運(yùn)用得游刃有余,,那時(shí)結(jié)合Position屬性進(jìn)行網(wǎng)頁(yè)布局已不再話下。

   定位方式之一Position 定位

position : static | absolute | fixed | relative

取值:

static : 默認(rèn)值,。無(wú)特殊定位,,對(duì)象遵循HTML定位規(guī)則;

absolute : 將對(duì)象從文檔流中拖出,,使用 left ,, right ,, top , bottom 等屬性相對(duì)于其最接近的一個(gè)最有定位設(shè)置的父對(duì)象進(jìn)行絕對(duì)定位,。如果不存在這樣的父對(duì)象,,則依據(jù) body 對(duì)象。而其層疊通過(guò) z-index 屬性定義,;

fixed : 未支持,。對(duì)象定位遵從絕對(duì)(absolute)方式。但是要遵守一些規(guī)范,;

relative : 對(duì)象不可層疊,,但將依據(jù) left , right ,, top ,, bottom 等屬性在正常文檔流中偏移位置;

Left : 檢索或設(shè)置對(duì)象與其最近一個(gè)具有定位設(shè)置的父對(duì)象左邊相關(guān)的位置,。此屬性?xún)H僅在對(duì)象的定位( position )屬性被設(shè)置時(shí)可用,。否則,此屬性設(shè)置會(huì)被忽略,。

Right : 檢索或設(shè)置對(duì)象與其最近一個(gè)具有定位設(shè)置的父對(duì)象右邊相關(guān)的位置,。此屬性?xún)H僅在對(duì)象的定位( position )屬性被設(shè)置時(shí)可用。否則,,此屬性設(shè)置會(huì)被忽略,。

Top : 檢索或設(shè)置對(duì)象與其最近一個(gè)具有定位設(shè)置的父對(duì)象頂邊相關(guān)的位置。此屬性?xún)H僅在對(duì)象的定位( position )屬性被設(shè)置時(shí)可用,。否則,,此屬性設(shè)置會(huì)被忽略。

Bottom : 檢索或設(shè)置對(duì)象與其最近一個(gè)具有定位設(shè)置的父對(duì)象底邊相關(guān)的位置,。此屬性?xún)H僅在對(duì)象的定位( position )屬性被設(shè)置時(shí)可用,。否則,此屬性設(shè)置會(huì)被忽略,。

 

Absolute:

在Absolute的官方解釋語(yǔ)中出現(xiàn)了2個(gè)專(zhuān)業(yè)用語(yǔ),,一個(gè)是文本流,一個(gè)是父對(duì)象,,很明顯,,要想理解absolutely的定義就必須得了解文本流和父對(duì)象的含義。

文本流 :一系列字符,,可以由多行構(gòu)成,,每行由一個(gè)換行符終止。在HTML中字符也就是html文檔顯示的元素(文字,,圖片,,視頻等),,可將文本流抽象理解為整個(gè)html頁(yè)面元素的排版方式。

父對(duì)象(也稱(chēng)父級(jí)對(duì)象) : 在Css官方語(yǔ)言中并未明確給出父對(duì)象到底是個(gè)什么概念,,說(shuō)得比較籠統(tǒng),,形象的也就是當(dāng)B嵌套在A中時(shí),A就是父級(jí)對(duì)象,,B就是子級(jí)對(duì)象,就好像是A把B生出來(lái)的一樣,。

<div id=”A”>   <div id=”B”></div>   </div>

 

現(xiàn)在我們?cè)倩剡^(guò)頭來(lái)看Absolute,。在CSS中,它的寫(xiě)法是: position: absolute; 他的意思是絕對(duì)定位,,那到底怎么來(lái)理解“絕對(duì)”這兩個(gè)字呢,?我們先來(lái)看兩個(gè)例子:

1.       研究沒(méi)有父級(jí)或父級(jí)未定義position的情況:

創(chuàng)建一個(gè)html文檔,定義一個(gè)div,,并為它寫(xiě)下以下屬性

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www./1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>無(wú)標(biāo)題文檔</title>

<style type="text/css">

#test1 {

position:absolute;

width:200px;

height:200px;

border:10px solid #000000;

background-color:#990000;}

</style>

</head>

 

<body>

<div id="test1"></div>

</body>

</html>

 

(圖片1)

很明顯在沒(méi)有任何其他元素干擾下他是參照html頁(yè)面默認(rèn)的margin處開(kāi)始定位的(非瀏覽器的左上角,,瀏覽器的左上角再Address的A處),也就是body,。那么我們?cè)趺磁浜蟃OP,、RIGHT、BOTTOM,、LEFT(下面簡(jiǎn)稱(chēng)TRBL)來(lái)進(jìn)行定位呢,?

我們繼續(xù)為叫做text1的div進(jìn)行以下定義:

#test1 {

       position:absolute;

       width:200px;

       height:200px;

       border:10px solid #000000;

       background-color:#990000;

       top:50px;

       left:50px;

}

 

(圖片2)

如果設(shè)定TRBL并且沒(méi)有父級(jí)或父級(jí)沒(méi)有設(shè)定position屬性,那么當(dāng)前的absolute則以瀏覽器左上角為原始點(diǎn)進(jìn)行定位,,位置將由TRBL決定,。

 

2.       研究具有父級(jí)對(duì)象并且父級(jí)對(duì)象設(shè)定了position屬性:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www./1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>無(wú)標(biāo)題文檔</title>

<style type="text/css">

body {

margin:0;

color:#FFFFFF;}

#test0 {

width:270px;

height:50px;

background-color:#795B7D;}

 

#test1 {

position:absolute;

width:200px;

height:200px;

border:10px solid #000000;

background-color:#990000;

top:50px;

left:50px;}

 

#test2 {

position:absolute;

border:10px solid #BFA800;

width:100px;

height:100px;

background-color:#000066;}

</style>

</head>

 

<body>

<div id="test0">我是默認(rèn)定位,沒(méi)有margin/padding/border不受定位影響</div>

<div id="test1">

<div id="test2">我是子對(duì)象,,大家注意看我的位置變化</div></div>

 

</body>

</html>

 

(圖片3)

在這個(gè)例子中大家可以很明顯的看出父級(jí)對(duì)象是個(gè)什么意思了吧,!說(shuō)得更直觀一點(diǎn),父子對(duì)象關(guān)系就是當(dāng)B嵌套在A中時(shí),,A就是父級(jí)對(duì)象,,B就是子級(jí)對(duì)象,就好像是A把B生出來(lái)的一樣,。

那我們來(lái)看看當(dāng)為名叫test2的子對(duì)象加上了TRBL是,,它的移動(dòng)和沒(méi)有父對(duì)象的時(shí)候是否一樣呢?

我們?yōu)閠est2定義如下:

#test2 {

       position:absolute;

       border:10px solid #BFA800;

       width:100px;

       height:100px;

       top:20px;

       left:20px;

       background-color:#000066;

}

 

(圖片4)

    很明顯,,移動(dòng)規(guī)則仍然是參照原始點(diǎn)進(jìn)行移動(dòng),。

    而關(guān)于z-index層疊問(wèn)題就更好理解了,當(dāng)兩個(gè)div重疊時(shí)候,,z-index的值越大層疊就越靠前(前提是兩個(gè)div都擁有position屬性).同時(shí)理解“大”的含義,,-1比-2要大,,通過(guò)數(shù)軸進(jìn)行比較(z軸)。

通過(guò)這2個(gè)例子,,我們完全可以很好的理解絕對(duì)定位absolute的意思,,總結(jié)可以說(shuō)為:

它是參照瀏覽器的左上角,配合TOP,、RIGHT,、BOTTOM、LEFT(下面簡(jiǎn)稱(chēng)TRBL)進(jìn)行定位,,在沒(méi)有設(shè)定TRBL,,默認(rèn)依據(jù)父級(jí)的做標(biāo)原始點(diǎn)為原始點(diǎn)。如果設(shè)定有TRBL并且父級(jí)沒(méi)有設(shè)定position屬性,,那么當(dāng)前的absolute則以瀏覽器左上角為原始點(diǎn)進(jìn)行定位,,位置將由TRBL決定。

明白了之后相信大家可以理解為什么行家們多說(shuō)“網(wǎng)頁(yè)居中的話用Absolute就容易出錯(cuò)”這句話了吧,?,!因?yàn)榫W(wǎng)頁(yè)一直是隨著分辨率的大小自動(dòng)適應(yīng)的,而Absolute則會(huì)以瀏覽器的左上角為原始點(diǎn),,不會(huì)因?yàn)榉直媛实淖兓兓恢谩?/p>

 

    在此我們不緊明白了absolute的用法,,而且還看見(jiàn)了一個(gè)很明顯的問(wèn)題,那就是絕對(duì)定位不光脫離了文本流,,而且在文本流中也不會(huì)給這個(gè)絕對(duì)定位元素留下專(zhuān)屬空位,,這就好比是一個(gè)工廠里的工人,如果有一個(gè)工人走了自然會(huì)要有別的工人來(lái)填充這個(gè)位置,。而移動(dòng)出去的部分自然也就成為了自由體,。絕對(duì)定位將可以通過(guò)TRBL來(lái)設(shè)置元素處在任何一個(gè)位置。

    那么相對(duì)定位呢,?相對(duì)定位只可以在文本流中進(jìn)行位置的上下左右的移動(dòng),,但存在一定的局限性,雖然他的表現(xiàn)區(qū)脫離了文本流,,但是在文本流卻依然為其保留了一席之地,,這就好比一個(gè)打工的人他到了外地,但是在老家依然有一個(gè)專(zhuān)屬于他的位置,,這個(gè)位置不隨他的移動(dòng)而改變,。但是這樣很明顯就會(huì)空出一塊空白來(lái),如果希望文本流拋棄這個(gè)部分就需要用到絕對(duì)定位,。

 

    看完了這兩段話后你肯定會(huì)有點(diǎn)摸不著頭腦,,不要緊我們就借由這個(gè)疑問(wèn)來(lái)討論一下相對(duì)定位的用法,同樣我們還是舉兩個(gè)例子來(lái)看看,當(dāng)你看完了例子再回過(guò)頭來(lái)看上面的兩段話你會(huì)理解得非常清楚,,并可以知道絕對(duì)定位和相對(duì)定位的差別,。

 

 

    Relative:

    Relative,Css中的寫(xiě)法是:position: relative; 他的意思是相對(duì)定位,,他是參照父級(jí)的原始點(diǎn)為原始點(diǎn),,無(wú)父級(jí)則以body的原始點(diǎn)為原始點(diǎn),配合TRBL進(jìn)行定位,,當(dāng)父級(jí)內(nèi)有padding等Css屬性時(shí),,當(dāng)前級(jí)的原始點(diǎn)則參照父級(jí)內(nèi)容區(qū)的原始點(diǎn)進(jìn)行定位。

    看完這段話后大家是否覺(jué)得很熟悉呢,?對(duì),,其實(shí)絕對(duì)定位和相對(duì)定位的定位標(biāo)準(zhǔn)都是一樣的,都是“參照父級(jí)的原始點(diǎn)為原始點(diǎn),,無(wú)父級(jí)則以body的原始點(diǎn)為原始點(diǎn),配合TRBL進(jìn)行定位”,,他們只是在實(shí)際運(yùn)用情況中會(huì)有一些不同,,下面的例子就是來(lái)解決這些疑惑的,當(dāng)你了解了這些不同之處以后,,你就能非常熟練的運(yùn)用position定位了,。

    1.研究沒(méi)有父級(jí)或父級(jí)未定義position的情況:

    由于與absolute的定位方式一樣,因此只需將absolute例子中absolute相應(yīng)的改變?yōu)閞elative即可,,在此我就不在贅述,。

    2. 研究具有父級(jí)對(duì)象并且父級(jí)對(duì)象設(shè)定了position屬性:

    我們先來(lái)看看所有div都不加position屬性的情況:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www./1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>無(wú)標(biāo)題文檔</title>

<style type="text/css">

body {

       margin:0;

       color:#FFFFFF;}

 

#test0 {

       width:270px;

       height:50px;

       background-color:#795B7D;}

 

#test1 {

       width:200px;

       height:200px;

       border:10px solid #000000;

       background-color:#990000;}

 

#test2 {

              border:10px solid #BFA800;

       width:100px;

       height:100px;

       background-color:#000066;}

</style>

</head>

 

<body>

<div id="test1">

       <div id="test2">我是子對(duì)象,大家注意看我的位置變化</div>

</div>

<div id="test0">我是參考div,,沒(méi)有margin/padding/border不受定位影響</div>

</body>

</html>

 

(圖片5)

    此處我把參考div放在了測(cè)試div的下面,,大家想想,如果我把名叫test1的父級(jí)加上一個(gè)position:absolute,,會(huì)發(fā)生什么變化呢,?對(duì),參考div的左上角會(huì)跑到test1的左上角,,也就是瀏覽器的左上角,。 

(圖片6)

    大家再想想,如果我把名叫test1的父級(jí)加上一個(gè)position:relative,,會(huì)發(fā)生什么變化呢,?

#test1 {

       position:relative;

       width:200px;

       height:200px;

       border:10px solid #000000;

       background-color:#990000;

}

       為了大家看的更明顯,我們?yōu)閠est1加上TRBL:

       #test1 {

              position:relative;

              width:200px;

              height:200px;

              border:10px solid #000000;

              background-color:#990000;

top:150px;

              left:300px;

    

 

(圖片7)

    大家可以看到,,參考div的位置并未隨著test的移動(dòng)而移動(dòng),,它依然處于原位置,雖然他的表現(xiàn)區(qū)脫離了文本流,,但是在文本流卻依然為其保留了原本的位置,,很明顯就會(huì)空出一塊空白來(lái),,如果希望文本流拋棄這個(gè)部分就需要用到絕對(duì)定位。因此在實(shí)際運(yùn)用中要特別注意這點(diǎn),,根據(jù)你所要的效果來(lái)決定是否留下空白區(qū)域,。

    現(xiàn)在再去看看關(guān)于那個(gè)打工人的比喻,現(xiàn)在是不是可以很好的理解了呢,?

    現(xiàn)在你了解相對(duì)定位的含義以及相對(duì)定位和絕對(duì)定位的區(qū)別了吧,。

    相互關(guān)聯(lián)的定位:

    上面說(shuō)的是單一的絕對(duì)定位或相對(duì)定位,而在實(shí)際的應(yīng)用中我們常常會(huì)需要用到一種特別的形式——相對(duì)定位和絕對(duì)定位的混合使用,。

    那么我們就以下面的例子來(lái)鞏固一下上面所學(xué)的2種定位吧:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www./1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>無(wú)標(biāo)題文檔</title>

<style type="text/css">

body {

       margin:0;

       color:#FFFFFF;}

 

#test1 {

       position:relative;

       width:200px;

       height:200px;

       border:10px solid #000000;

       background-color:#990000;

       top:50px;

       left:50px;}

 

#test2 {

       position:absolute;

       border:10px solid #BFA800;

       width:100px;

       height:100px;

       top:20px;

       left:20px;

       background-color:#000066;}

</style>

</head>

<body>

<div id="test1">

       <div id="test2">我是子對(duì)象,,大家注意看我的位置變化</div>

</div>

</body>

</html>

 

    這時(shí)候子對(duì)象test2即有絕對(duì)定位的特性有包含相對(duì)定位的特點(diǎn),父級(jí)這里如果要產(chǎn)生位置移動(dòng),,或是瀏覽器窗口大小有所變動(dòng)都不會(huì)影響到這個(gè)絕對(duì)定位元素與父級(jí)的相對(duì)定位元素之間的位置關(guān)系,。這個(gè)子級(jí)也不用調(diào)整數(shù)值。

    這是一種很特別并且也是非常實(shí)用的應(yīng)用方式,。如果你之前對(duì)于定位的控制并不自如的話,,相信看完對(duì)這里對(duì)定位的解釋一定可以把定位使用得隨心所欲。

Fixed:

    由于廣告的濫用,,使得一些瀏覽器軟件都開(kāi)始有了廣告內(nèi)容攔截,,使得一些很好的效果現(xiàn)在都不推薦使用了。比如讓一個(gè)元素可能隨著網(wǎng)頁(yè)的滾動(dòng)而不斷改變自己在瀏覽器的位置,。而現(xiàn)在我可以通過(guò)CSS中的一個(gè)定位屬性來(lái)實(shí)現(xiàn)這樣的一個(gè)效果,,這個(gè)元素屬性就是曾經(jīng)不被支持的position:fixed; 他的含義就是:固定定位。這個(gè)固定與絕對(duì)定位很像,,唯一不同的是絕對(duì)定位是被固定在網(wǎng)頁(yè)中的某一個(gè)位置,,而固定定位則是固定在瀏覽器的視框位置。

    雖然原來(lái)的瀏覽器并不支持過(guò)個(gè)屬性,,但是瀏覽器的發(fā)展使得現(xiàn)在的高級(jí)瀏覽器都可以正確的解析這個(gè)CSS屬性,。并且通過(guò)CSS HACK來(lái)讓IE6都可以實(shí)現(xiàn)這樣的效果(目前無(wú)法使IE5.x)實(shí)現(xiàn)這種效果。為了不使本文變成冗長(zhǎng)的大論這里只是簡(jiǎn)要告訴大家它的含義關(guān)于fixed屬性的實(shí)例的一些問(wèn)題大家可以上百度或者Google查找并分析一下,,很容易理解的,。有不理解的地方可以給我留言!

    總結(jié):相信大家看完了這篇文章后一定會(huì)對(duì)position屬性有一個(gè)更高的了解了吧,,希望今后你可以揮灑自如的運(yùn)用這個(gè)屬性進(jìn)行定位,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多