關於html CSS 絕對相對布局問題


CSS定位屬性

position:把元素放置到一個靜態的、相對的、絕對的、或固定的位置中。

top:定義了一個定位元素的上外邊距邊界包含塊上邊界之間的偏移。

right:定義了定位元素右外邊距邊界包含塊右邊界之間的偏移。

bottom:定義了定位元素下外邊距邊界與其包含塊下邊界之間的偏移。

left:定義了定位元素左外邊距邊界其包含塊左邊界之間的偏移。

overflow:設置當元素的內容溢出其區域時發生的事情。

clip:設置元素的形狀。元素被剪入這個形狀之中,然后顯示出來。

vertical-align:設置元素的垂直對齊方式。

Z-index:設置元素的堆疊順序。

 

css布局中的 position:static|absolute|fixed|relative 的4中屬性

從上面語法可以看出,定位的方法有很多種,它們分別是靜態(static),絕對定位(absolute),固定(fixed),相對定位(relative)。在這個教程里,我不逐一講,只講最常用也是最實用的兩個定位方法:絕對定位(absolute)、相對定位(relative)。

絕對定位(absolute):將被賦予此定位方法的對象從文檔流中拖出,使用left,right,top,bottom等屬性相對於其最接近的一個 最有定位設置的父級對象進行絕對定位,如果對象的父級沒有設置定位屬性,即還是遵循HTML定位規則的,則依據body對象左上角作為參考進行定位。絕對 定位對象可層疊,層疊順序可通過z-index屬性控制,z-index值為無單位的整數,大的在最上面,可以有負值(目前負值FF不支持)。

相對定位(relative):對象不可層疊,依據left,right,top,bottom等屬性在正常文檔流中偏移自身位置。同樣可以用z-index分層設計。

static:是默認屬性,元素框正常生成。塊級元素生成一個矩形框,作為文檔流的一部分,行內元素則會創建一個或多個行框,置於其父元素中。
relative:元素框偏移某個距離。元素仍保持其未定位前的形狀,它原本所占的空間仍保留。
相對定位實際上被看作普通流定位模型的一部分,因為元素的位置相對於它在普通流中的位置。
注意,在使用相對定位時,無論是否進行移動,元素仍然占據原來的空間。因此,移動元素會導致它覆蓋其它框。
absolute:元素框從文檔流完全刪除,並相對於其包含塊定位。包含塊可能是文檔中的另一個元素或者是初始包含塊。元素原先在正常文檔流中所占的空間會關閉,就好像元素原來不存在一樣。元素定位后生成一個塊級框,而不論原來它在正常流中生成何種類型的框。盡量不要使用left:px.right:px等屬性。盡量使用margin-left:多少px;這樣不容易錯位。
fixed:元素框的表現類似於將 position 設置為 absolute,不過其包含塊是視窗本身。是固定死的。無論你瀏覽器上下如何滾動,距離瀏覽器的具體都不會改變的

 

浮動不完全是定位,不過,它當然也不是正常流布局。

一切皆為框

塊框和行內元素

使用 display 屬性改變生成的框的類型

這意味着,通過將 display 屬性設置為 block,可以讓行內元素(比如 <a> 元素)表現得像塊級元素一樣。還可以通過把 display 設置為 none,讓生成的元素根本沒有框。這樣的話,該框及其所有內容就不再顯示,不占用文檔中的空間。

但是在一種情況下,即使沒有進行顯式定義,也會創建塊級元素。這種情況發生在把一些文本添加到一個塊級元素(比如 div)的開頭。即使沒有把這些文本定義為段落,它也會被當作段落對待:

<div>
some text
<p>Some more text.</p>
</div>

在這種情況下,這個框稱為無名塊框,因為它不與專門定義的元素相關聯。

塊級元素的文本行也會發生類似的情況。假設有一個包含三行文本的段落。每行文本形成一個無名框。無法直接對無名塊或行框應用樣式,因為沒有可以應用樣式的地方(注意,行框和行內框是兩個概念)。但是,這有助於理解在屏幕上看到的所有東西都形成某種框。

 

CSS 定位機制

CSS 有三種基本的定位機制:普通流、浮動和絕對定位。

除非專門指定,否則所有框都在普通流中定位。也就是說,普通流中的元素的位置由元素在 (X)HTML 中的位置決定。

塊級框從上到下一個接一個地排列,框之間的垂直距離是由框的垂直外邊距計算出來。

行內框在一行中水平布置。可以使用水平內邊距、邊框和外邊距調整它們的間距。但是,垂直內邊距、邊框和外邊距不影響行內框的高度。由一行形成的水平框稱為行框(Line Box),行框的高度總是足以容納它包含的所有行內框。不過,設置行高可以增加這個框的高度。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM