display:block就是將元素顯示爲塊級元素,通常是其餘元素的容器,可容納內聯元素和其餘塊狀元素,塊狀元素排斥其餘元素與其位於同一行,寬度(width)高度(height)起做用。常見塊狀元素爲div和p。瀏覽器
塊元素(block element)
address - 地址
blockquote - 塊引用
center - 舉中對齊塊
dir - 目錄列表
div - 經常使用塊級容易,也是CSS layout的主要標籤
dl - 定義列表
fieldset - form控制組
form - 交互表單
h1 - 大標題
h2 - 副標題
h3 - 3級標題
h4 - 4級標題
h5 - 5級標題
h6 - 6級標題
hr - 水平分隔線
isindex - input prompt
menu - 菜單列表
noframes - frames可選內容,(對於不支持frame的瀏覽器顯示此區塊內容
noscript - 可選腳本內容(對於不支持script的瀏覽器顯示此內容)
ol - 排序表單
p - 段落
pre - 格式化文本
table - 表格
ul - 非排序列表
display:inline就是將元素顯示爲內聯元素,內聯元素只能容納文本或者其餘內聯元素,它容許其餘內聯元素與其位於同一行,但寬度(width)高度(height)不起做用。常見內聯元素爲「a」ide
內聯元素(inline element)
a - 錨點
abbr - 縮寫
acronym - 首字
b - 粗體(不推薦)
bdo - bidi override
big - 大字體
br - 換行
cite - 引用
code - 計算機代碼(在引用源碼的時候須要)
dfn - 定義字段
em - 強調
font - 字體設定(不推薦)
i - 斜體
img - 圖片
input - 輸入框
kbd - 定義鍵盤文本
label - 表格標籤
q - 短引用
s - 中劃線(不推薦)
samp - 定義範例計算機代碼
select - 項目選擇
small - 小字體文本
span - 經常使用內聯容器,定義文本內區塊
strike - 中劃線
strong - 粗體強調
sub - 下標
sup - 上標
textarea - 多行文本輸入框
tt - 電傳文本
u - 下劃線
var - 定義變量
display:inline-block將對象呈遞爲內聯對象,可是對象的內容做爲塊對象呈遞。旁邊的內聯對象會被呈遞在同一行內,容許空格。(準確地說,應用此特性的元素呈現爲內聯對象,周圍元素保持在同一行,但能夠設置寬度和高度地塊元素的屬性)佈局
inline-block兼容性問題:字體
支持此屬性,目前支持的瀏覽器有:Opera、Safari。spa
在IE中對內聯元素使用display:inline-block,IE是不識別的,但使用display:inline-block在IE下會觸發layout,從而使內聯元素擁有了display:inline-block屬性的表症。從上面的這個分析,也不難理解爲何IE下,對塊元素設置display:inline-block屬性沒法實現inline-block的效果。這時塊元素僅僅是被display:inline-block觸發了layout,而它本就是行佈局,因此觸發後,塊元素依然仍是行佈局,而不會如Opera中塊元素呈遞爲內聯對象。code
IE下塊元素如何實現display:inline-block的效果?orm
方法一:對象
先使用display:inline-block屬性觸發塊元素,而後再定義display:inline,讓塊元素呈遞爲內聯元素,讓塊元素呈遞爲內聯對象(兩個display要前後放在兩個CSS聲明中才有效果,這是IE的一個經典bug,若是先定義了display:inline-block,而後再將display設回inline或block,layout不會消失)。代碼以下(...爲省略的其餘屬性內容):blog
div {display:inline-block;...}
div {display:inline;}
方法二:排序
直接讓塊元素設置爲內聯對象呈遞(設置屬性display:inline),而後觸發塊元素的layout(如:zoom:1等)。代碼以下:
div {display:inline; zoom:1;...}