CSS盒模型

1、各類元素的width height margin padding 特性css

1.塊級元素瀏覽器

width、 height、 margin的四個方向、 padding的四個方向都正常顯示,遵循標準的css盒模型。例如:div框架

2.行內替換元素ui

width、 height、 margin的四個方向、 padding的四個方向都正常顯示,遵循標準的css盒模型。 例如:imgspa

3.行內非替換元素(重點)code

width、 height不起做用,用line-height來控制高度。blog

padding左右起做用,上下不會影響行高,可是對於有背景色和內邊距的行內非替換元素,背景能夠向元素上下延伸,可是行高沒有改變。所以視覺效果就是與前面的行重疊。繼承

margin左右做用起做用,上下不起做用,緣由在於:行內非替換元素的外邊距不會改變一個元素的行高。圖片

 

2、css元素的分類element

1. 替換和不可替換元素

從元素自己的特色來說,能夠分爲替換和不可替換元素。

a) 替換元素

替換元素就是瀏覽器根據元素的標籤和屬性,來決定元素的具體顯示內容。

例如:瀏覽器會根據<img>標籤的src屬性的值來讀取圖片信息並顯示出來,而若是查看(X)HTML代碼,則看不到圖片的實際內容;

又例如:根據<input>標籤的type屬性來決定是顯示輸入框,仍是單選按鈕等。

(X)HTML中的<img>、<input>、<textarea>、<select>、<object>都是替換元素。這些元素每每沒有實際的內容,便是一個空元素,瀏覽器會根據元素的標籤類型和屬性來顯示這些元素。可替換元素也在其顯示中生成了框。

b) 不可替換元素

(X)HTML 的大多數元素是不可替換元素,即其內容直接表現給用戶端(例如瀏覽器)。段落<p>是一個不可替換元素,文字「段落的內容」全被顯示。

 

2. 顯示元素

除了可替換元素和不可替換元素的分類方式外,CSS 2.1中元素還有另外的分類方式:塊級元素(block-level)和行內元素(inline-level,也譯做「內聯」元素)。

a) 塊級元素

在視覺上被格式化爲塊的元素,最明顯的特徵就是它默認在橫向充滿其父元素的內容區域,並且在其左右兩邊沒有其餘元素,即塊級元素默認是獨佔一行的。

典型的塊級元素有:<div>、<p>、<h1>到<h6>,等等。

經過CSS設定了浮動(float屬性,可向左浮動或向右浮動)以及設定顯示(display)屬性爲「block」或「list-item」的元素都是塊級元素。

可是浮動元素比較特殊,因爲浮動,其旁邊可能會有其餘元素的存在。而「list-item」(列表項<li>),會在其前面生成圓點符號,或者數字序號。

b) 行內元素

行內元素不造成新內容塊,即在其左右能夠有其餘元素,例如<a>、<span>、<strong>等,都是典型的行內級元素。

display屬性等於「inline」的元素都是行內元素。幾乎全部的可替換元素都是行內元素,例如<img>、<input>等等。

不過元素的類型也不是固定的,經過設定CSS 的display屬性,可使行內元素變爲塊級元素,也可讓塊級元素變爲行內元素。

 

3、盒模型

頁面上的每一個元素被看作一個矩形框,這個框由元素的內容(content)、內邊距(padding)、邊框(border)和外邊距(margin)組成。

內邊距出如今內容區域的周圍。若是在元素上添加背景,那麼背景會應用於由內容和內邊距組成的區域。在邊框外邊的是外邊距。外邊距是透明的。通常使用它控制元素之間的間隔。

 

 

在CSS中盒模型被分爲兩種,第一種是w3c的標準模型,另外一種是IE的傳統模型

1.W3C標準盒模型

外盒尺寸計算(元素空間尺寸) element空間高度=內容高度+內距+邊框+外距 element空間寬度=內容寬度+內距+邊框+外距 內盒尺寸計算(元素大小) element高度=內容高度+內距+邊框(height爲內容高度) element寬度=內容寬度+內距+邊框(width爲內容寬度)

 

2.IE傳統下盒模型(IE6如下,不包含IE6版本或」QuirksMode下IE5.5+」)

外盒尺寸計算(元素空間尺寸) element空間高度=內容高度+外距(height包含了元素內容寬度、邊框、內距) element寬間寬度=內容寬度+外距(width包含了元素內容寬度、邊框、內距) 內盒尺寸計算(元素大小) element高度=內容高度(height包含了元素內容寬度、邊框、內距) element寬度=內容寬度(width包含了元素內容寬度、邊框、內距)

 

在CSS3中新增長了box-sizing屬性,可以事先定義盒模型的尺寸解析方式,其語法規則以下:

box-sizing: content-box | border-box | inherit

(1) content-box ,默認值,可使設置的寬度和高度值應用到元素的內容框。盒子的width只包含內容。

  即總寬度=margin+border+padding+width

(2) border-box , 設置的width值實際上是除margin外的border+padding+element的總寬度。盒子的width包含border+padding+內容

    即總寬度=margin+width

不少CSS框架,都會對盒子模型的計算方法進行簡化。

(3) inherit , 規定應從父元素繼承 box-sizing 屬性的值.

 

 

4、問題

當父元素和子元素沒有內邊距padding或邊框border將外邊距分割開時,它們的頂和/或底外邊距會發生疊加。例如,設置第一個子元素的margin-top值的時候,會出現margin-top值加在父元素上的現象,解決方法有四個:

(1)給父元素加邊框border (反作用)

(2)給父元素設置padding值  (反作用)

(3)父元素添加 overflow:hidden (反作用)

(4)父元素加前置內容生成。(推薦)

以第四種方法爲例:

.parent : before {
     content : " ";
     display : table/inline-block;
}
相關文章
相關標籤/搜索