精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Div+Css網頁布局之定位篇--Postion屬性詳解
Div+Css網頁布局之定位篇--Postion屬性詳解(2009-05-22 10:59:13)

    Div+Css網頁布局一直以來是用Css制作網站的精華,一個好的網站多半是由于其合理而有意義的布局使得網站更具表現力。

    正由于其是精華因此它也成為了Css學習的一個重點和難點。特別是用Position 屬性布局的問題一直是Css新手的一個難點,因為絕對定位和相對定位的書面解釋語通常說得比較抽象,并且里面包含一些專業術語,因此初學者看起來會比較吃力,比較難懂。

    因此我在此所談論的是在列出書面表達的同時,用圖片和實際情況給大家一種更加直觀明了的介紹,這樣可以讓大家從根本上理解和鞏固Position的含義。當你真正理解了Position屬性的定義之后,我相信聰明的你定可以將Position屬性運用得游刃有余,那時結合Position屬性進行網頁布局已不再話下。

   定位方式之一Position 定位

position : static | absolute | fixed | relative

取值:

static : 默認值。無特殊定位,對象遵循HTML定位規則;

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

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

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

Left : 檢索或設置對象與其最近一個具有定位設置的父對象左邊相關的位置。此屬性僅僅在對象的定位( position )屬性被設置時可用。否則,此屬性設置會被忽略。

Right : 檢索或設置對象與其最近一個具有定位設置的父對象右邊相關的位置。此屬性僅僅在對象的定位( position )屬性被設置時可用。否則,此屬性設置會被忽略。

Top : 檢索或設置對象與其最近一個具有定位設置的父對象頂邊相關的位置。此屬性僅僅在對象的定位( position )屬性被設置時可用。否則,此屬性設置會被忽略。

Bottom : 檢索或設置對象與其最近一個具有定位設置的父對象底邊相關的位置。此屬性僅僅在對象的定位( position )屬性被設置時可用。否則,此屬性設置會被忽略。

 

Absolute:

在Absolute的官方解釋語中出現了2個專業用語,一個是文本流,一個是父對象,很明顯,要想理解absolutely的定義就必須得了解文本流和父對象的含義。

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

父對象(也稱父級對象) : 在Css官方語言中并未明確給出父對象到底是個什么概念,說得比較籠統,形象的也就是當B嵌套在A中時,A就是父級對象,B就是子級對象,就好像是A把B生出來的一樣。

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

 

現在我們再回過頭來看Absolute。在CSS中,它的寫法是: position: absolute; 他的意思是絕對定位,那到底怎么來理解“絕對”這兩個字呢?我們先來看兩個例子:

1.       研究沒有父級或父級未定義position的情況:

創建一個html文檔,定義一個div,并為它寫下以下屬性

<!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=utf-8" />

<title>無標題文檔</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)

很明顯在沒有任何其他元素干擾下他是參照html頁面默認的margin處開始定位的(非瀏覽器的左上角,瀏覽器的左上角再Address的A處),也就是body。那么我們怎么配合TOP、RIGHT、BOTTOM、LEFT(下面簡稱TRBL)來進行定位呢?

我們繼續為叫做text1的div進行以下定義:

#test1 {

       position:absolute;

       width:200px;

       height:200px;

       border:10px solid #000000;

       background-color:#990000;

       top:50px;

       left:50px;

}

 

(圖片2)

如果設定TRBL并且沒有父級或父級沒有設定position屬性,那么當前的absolute則以瀏覽器左上角為原始點進行定位,位置將由TRBL決定。

 

2.       研究具有父級對象并且父級對象設定了position屬性:

<!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=utf-8" />

<title>無標題文檔</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">我是默認定位,沒有margin/padding/border不受定位影響</div>

<div id="test1">

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

 

</body>

</html>

 

(圖片3)

在這個例子中大家可以很明顯的看出父級對象是個什么意思了吧!說得更直觀一點,父子對象關系就是當B嵌套在A中時,A就是父級對象,B就是子級對象,就好像是A把B生出來的一樣。

那我們來看看當為名叫test2的子對象加上了TRBL是,它的移動和沒有父對象的時候是否一樣呢?

我們為test2定義如下:

#test2 {

       position:absolute;

       border:10px solid #BFA800;

       width:100px;

       height:100px;

       top:20px;

       left:20px;

       background-color:#000066;

}

 

(圖片4)

    很明顯,移動規則仍然是參照原始點進行移動。

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

通過這2個例子,我們完全可以很好的理解絕對定位absolute的意思,總結可以說為:

它是參照瀏覽器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面簡稱TRBL)進行定位,在沒有設定TRBL,默認依據父級的做標原始點為原始點。如果設定有TRBL并且父級沒有設定position屬性,那么當前的absolute則以瀏覽器左上角為原始點進行定位,位置將由TRBL決定。

明白了之后相信大家可以理解為什么行家們多說“網頁居中的話用Absolute就容易出錯”這句話了吧?!因為網頁一直是隨著分辨率的大小自動適應的,而Absolute則會以瀏覽器的左上角為原始點,不會因為分辨率的變化而變化位置。

 

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

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

 

    看完了這兩段話后你肯定會有點摸不著頭腦,不要緊我們就借由這個疑問來討論一下相對定位的用法,同樣我們還是舉兩個例子來看看,當你看完了例子再回過頭來看上面的兩段話你會理解得非常清楚,并可以知道絕對定位和相對定位的差別。

 

 

    Relative:

    Relative,Css中的寫法是:position: relative; 他的意思是相對定位,他是參照父級的原始點為原始點,無父級則以body的原始點為原始點,配合TRBL進行定位,當父級內有padding等Css屬性時,當前級的原始點則參照父級內容區的原始點進行定位。

    看完這段話后大家是否覺得很熟悉呢?對,其實絕對定位和相對定位的定位標準都是一樣的,都是“參照父級的原始點為原始點,無父級則以body的原始點為原始點,配合TRBL進行定位”,他們只是在實際運用情況中會有一些不同,下面的例子就是來解決這些疑惑的,當你了解了這些不同之處以后,你就能非常熟練的運用position定位了。

    1.研究沒有父級或父級未定義position的情況:

    由于與absolute的定位方式一樣,因此只需將absolute例子中absolute相應的改變為relative即可,在此我就不在贅述。

    2. 研究具有父級對象并且父級對象設定了position屬性:

    我們先來看看所有div都不加position屬性的情況:

<!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=utf-8" />

<title>無標題文檔</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">我是子對象,大家注意看我的位置變化</div>

</div>

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

</body>

</html>

 

(圖片5)

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

(圖片6)

    大家再想想,如果我把名叫test1的父級加上一個position:relative,會發生什么變化呢?

#test1 {

       position:relative;

       width:200px;

       height:200px;

       border:10px solid #000000;

       background-color:#990000;

}

       為了大家看的更明顯,我們為test1加上TRBL:

       #test1 {

              position:relative;

              width:200px;

              height:200px;

              border:10px solid #000000;

              background-color:#990000;

top:150px;

              left:300px;

    

 

(圖片7)

    大家可以看到,參考div的位置并未隨著test的移動而移動,它依然處于原位置,雖然他的表現區脫離了文本流,但是在文本流卻依然為其保留了原本的位置,很明顯就會空出一塊空白來,如果希望文本流拋棄這個部分就需要用到絕對定位。因此在實際運用中要特別注意這點,根據你所要的效果來決定是否留下空白區域。

    現在再去看看關于那個打工人的比喻,現在是不是可以很好的理解了呢?

    現在你了解相對定位的含義以及相對定位和絕對定位的區別了吧。

    相互關聯的定位:

    上面說的是單一的絕對定位或相對定位,而在實際的應用中我們常常會需要用到一種特別的形式——相對定位和絕對定位的混合使用。

    那么我們就以下面的例子來鞏固一下上面所學的2種定位吧:

<!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=utf-8" />

<title>無標題文檔</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">我是子對象,大家注意看我的位置變化</div>

</div>

</body>

</html>

 

    這時候子對象test2即有絕對定位的特性有包含相對定位的特點,父級這里如果要產生位置移動,或是瀏覽器窗口大小有所變動都不會影響到這個絕對定位元素與父級的相對定位元素之間的位置關系。這個子級也不用調整數值。

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

Fixed:

    由于廣告的濫用,使得一些瀏覽器軟件都開始有了廣告內容攔截,使得一些很好的效果現在都不推薦使用了。比如讓一個元素可能隨著網頁的滾動而不斷改變自己在瀏覽器的位置。而現在我可以通過CSS中的一個定位屬性來實現這樣的一個效果,這個元素屬性就是曾經不被支持的position:fixed; 他的含義就是:固定定位。這個固定與絕對定位很像,唯一不同的是絕對定位是被固定在網頁中的某一個位置,而固定定位則是固定在瀏覽器的視框位置。

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

    總結:相信大家看完了這篇文章后一定會對position屬性有一個更高的了解了吧,希望今后你可以揮灑自如的運用這個屬性進行定位。

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
css 背景透明,文字不透明,alpha濾鏡,opacity,position:relat...
請教CSS中的position:relative;的作用。
div+Css示例
理解CSS浮動float、定位position
ie7下z
css中postion的fixed與absolute區別詳解
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 呼图壁县| 醴陵市| 前郭尔| 灵璧县| 昭通市| 收藏| 盐城市| 元谋县| 尚志市| 乌拉特前旗| 中方县| 济宁市| 怀宁县| 英超| 舟曲县| 永仁县| 鸡泽县| 绥中县| 新龙县| 武功县| 拜城县| 辽宁省| 达州市| 台东县| 青浦区| 襄垣县| 海阳市| 营山县| 牟定县| 布拖县| 南康市| 田东县| 河北区| 通化县| 横山县| 密云县| 股票| 长海县| 健康| 元谋县| 西贡区|