盒子的三種定位形式html
在標準流下的定位
在浮動屬性下的定位
在定位屬性下的定位
除非設置浮動屬性或定位屬性,不然全部盒子都是在標準流中定位
顧名思義,標準流中元素盒子的位置由元素在HTML中的位置決定。瀏覽器
盒子的浮動
在標準流中,塊級元素的盒子都是上下排列,行內元素 的盒子都是左右排列
若是僅僅按照標準流的方式進行排列,就只有這幾種可能性,限制太大。CSS的
指定者也想到了這樣排列限制的問題,所以有給出了浮動和定位方式進行盒子的排列
從而使排版的靈活性大大提升。
例如:有時但願相鄰塊級元素的盒子左右排列(全部盒子浮動)或者但願一個盒子被另外一個盒子中的內容
所環繞(一個盒子浮動)作出圖文混排的效果,這時最簡單的辦法就是運用浮動屬性使盒子在浮動方式下定位。ide
在標準流中,一個塊級元素在水平方向自動伸展,在他的父元素中佔滿一行;而在豎直方向和其餘元素依次排列,不能並排,使用
浮動方式後,這種排列方式就會發生改變
CSS中有一個float屬性,默認值爲none,也就是標準流一般的狀況,若是將float屬性的值設爲left或者right,元素就會向其父元素
的左側或右側靠緊,同時盒子的寬度再也不伸展,而是收縮,在沒設置寬度時,會根據盒子裏面的內容來肯定寬度。佈局
盒子的浮動主要是排版使用,咱們默認DIVtable標籤作出來的內容都是2Dhtm
浮動的清除對象
clear是清除浮動屬性,它的取值有left、right、both和none(默認值),若是設置盒子的清除屬性clear值爲left或right,表示該盒子
左邊和右邊不容許有浮動的對象。設爲both,表示兩邊都不能夠有浮動的對象,所以該盒子將會在瀏覽器中另起一行顯示。
文檔
CSS positionit
CSS定位(positioning)屬性容許你對元素進行定位
CSS爲定位和浮動提供了一些屬性,利用這些屬性,能夠創建列式佈局,將佈局的一部分與另外一部分重疊,
還能夠完成多年來一般須要使用多個表格才能完成的任務。io
CSS定位機制
CSS有三種基本的定位機制:普通流、浮動和絕對定位。
除非專門指定,不然全部框都在普通流中定位。也就是說,普通流中的元素位置由元素在(X)HTML中的位置決定
塊級框從上到下一個接一個地排列,框之間的垂直距離是由框的垂直外邊距計算出來的。table
CSS position屬性
經過使用position屬性,咱們能夠選擇4種不一樣類型的定位,這會影響元素框生成的方式。
position屬性值的含義:
static(默認值)元素框正常生成。塊級元素生成一個矩形框,做爲文框流的一部分,行內元素則會建立一個或多個行框,置於其父元素中。
relative元素框偏移某個距離。元素仍保持其未定位前的形狀,它本來所佔的空間仍保留。
absolute元素框從文檔流徹底刪除,並相對於其包含塊定位。包含快多是文檔中的另外一個元素或者是初始塊。元素原先在正常流中
所佔的空間會關閉,就好像元素原來不存在同樣。元素定位後生成一個塊級框,而不論原來它的正常流中生成何種類型框。
fixed元素框的表現相似於將position設置爲absolute,不過其包含塊是視窗自己。(滾動條滾動時fixed的盒子一直浮動在固定位置)
position:fixed;
top:0px;
left:500px;
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>float</title> <style> #header { width: 1000px; height: 100px; background-color: blue; margin:auto;/*天然居中*/ text-align: center; } #container { width: 1000px; height: 50px; background-color: gray; margin:auto;/*天然居中*/ text-align: center; } #main { width: 1000px; background-color: steelblue; margin:auto;/*天然居中*/ } #nav { width: 200px; height: 500px; background-color: red; margin: 0px 10px;/*上右下左*/ float: left; } #content { width: 500px; height: 500px; background-color: green; margin: 0px 10px;/*上右下左*/ float: left; } #side { width: 200px; height: 500px; background-color: blue; margin: 0px 10px;/*上右下左*/ float: left; } #footer { width: 1000px; height: 30px; background-color: bisque; margin:auto;/*天然居中*/ clear: both; text-align: right; } </style> </head> <body> <div id="header">頂部</div> <div id="container">內容</div> <div id="main">主體 <div id="nav">左邊</div> <div id="content">主內容</div> <div id="side">右邊框</div> <div id="footer">地址:xxxxx 電話:xxxxxx</div> </div> </body> </html>