1. 程式人生 > 實用技巧 >pod 私有pod庫

pod 私有pod庫

所謂盒子模型(Box Model)就是把HTML頁面中的元素看作是一個矩形的盒子,也就是一個盛裝內容的容器。每個矩形都由元素的內容(content)、內邊距(padding)、邊框(border)和外邊距(margin)組成。

所有的文件元素(標籤)都會生成一個矩形框,我們成為元素框(element box),它描述了一個文件元素再網頁佈局彙總所佔的位置大小。因此,每個盒子除了有自己大小和位置外,還影響著其他盒子的大小和位置。

盒子模型特性:

  •  每個盒子都有:邊界、邊框、填充、內容 4個屬性;
  • 每個屬性都包括4個部分:上、右、下、左。屬性的4部分可以同時設定,也可以分別設定。

一、盒子邊框(border)

border 屬性來定義盒子的邊框,該屬性包含3個子屬性:border-style(邊框樣式),border-color(邊框顏色),border-width(邊框寬度)。

1、定義寬度

(1)直接在屬性後面指定寬度值。

border-top-width:0.2em;         /*定義頂部邊框的寬度為元素內字型大小的 0.2倍*/
border-bottom-width: 12px;      /* 定義底部邊框寬度為12px*/

(2)使用關鍵字。(不常用)

可以使用 thin、medium 和 thick。不同瀏覽器對此解析的寬度值不同。很少用到。

(3)單獨為某條邊設定寬度。

單獨為元素的某條變設定寬度,分別使用 border-top-width、border-bottom-width、border-left-width、border-right-width 屬性。

(4)使用border-width 屬性速定義邊框寬度。 

border-width:2px;                      /* 定義4個邊都為2px*/
border-width:2px 4px;                  /* 定義上下邊為2px,左右邊為4px*/
border-width:2px 3px 4px;              /* 定義上邊為2px,左右邊為3px,下邊為4px*/
border-width:2px 3px 4px 5px;          /* 定義上邊2px,右邊為 3px,下邊為 4px,左邊為5px*/

Tips:當定義邊框寬度時,必須要定義邊框的顯示樣式,由於預設樣式為none,所以僅設定邊框的寬度,由於樣式不存在,邊框寬度也自動被清除為 0。

2、定義顏色

定義邊框顏色可以使用顏色名、RGB 顏色值或十六進位制顏色值。

Demo:

border-top-color: #f00;

為上邊框定義紅色的邊框。

3、定義樣式

邊框樣式是邊框顯示的基礎,CSS 提供了一下幾種邊框樣式:

屬性值 說明
none 預設值,無邊框,不受任何指定的 border-width 影響
hidden 隱藏邊框,IE 不支援
dotted 定義邊框為點線
dashed 定義邊框為虛線
solid 定義邊框為實線
double 定義邊框為雙線邊框,兩條線及其間隔寬度之和等於指定的border-width 值
groove 根據 border-color 定義 3D 凹槽
ridge 根據 border-color 定義 3D 凸槽
inset 根據 border-color 定義 3D 凹邊
outset 根據 border-color 定義 3D 凸邊

Demo:

border-color: #f00;border-style: outset;

4、綜合寫法

語法:

border : border-width || border-style || border-color

border 是一個複合屬性,可以把3個子屬性結合寫在一起。注意:順序不能錯誤

5、綜合表

設定內容 樣式屬性 常用屬性值
上邊框 border-top-style:樣式; border-top-width:寬度;border-top-color:顏色;border-top:寬度 樣式 顏色;
下邊框 border-bottom-style:樣式;border- bottom-width:寬度;border- bottom-color:顏色;border-bottom:寬度 樣式 顏色;
左邊框 border-left-style:樣式; border-left-width:寬度;border-left-color:顏色;border-left:寬度 樣式 顏色;
右邊框 border-right-style:樣式;border-right-width:寬度;border-right-color:顏色;border-right:寬度 樣式 顏色;
樣式綜合設定 border-style:上邊 [右邊 下邊 左邊]; none無(預設)、solid單實線、dashed虛線、dotted點線、double雙實線
寬度綜合設定 border-width:上邊 [右邊 下邊 左邊]; 畫素值
顏色綜合設定 border-color:上邊 [右邊 下邊 左邊]; 顏色值、#十六進位制、rgb(r,g,b)、rgb(r%,g%,b%)
邊框綜合設定 border:四邊寬度 四邊樣式 四邊顏色;

擴充套件1:

table{ border-collapse:collapse; } collapse 單詞是合併的意思,通過該屬性可以來設定一個細線表格。

擴充套件2:

圓角邊框(CSS3):

語法:

border-radius: 左上角  右上角  右下角  左下角;

取值可以是指定的固定的長度,也可以使用百分比來表示。

Demo:

border-radius: 10px;                      /*  一個數值表示4個角都是相同的 10px 的弧度 */
border-radius: 50%;                       /*  100px   50% 取寬度和高度 一半  則會變成一個圓形 */
border-radius: 10px 40px;                 /* 左上角  和 右下角  是 10px  右上角 左下角 40 對角線 */
border-radius: 10px 40px  80px;           /* 左上角 10    右上角  左下角 40   右下角80 */
border-radius: 10px 40px  80px  100px;    /* 左上角 10    右上角 40  右下角 80   左下角   右下角100 */

二、內邊距(padding)

padding屬性用於設定內邊距。 是指 邊框與內容之間的距離。

padding-top:上內邊距

padding-right:右內邊距

padding-bottom:下內邊距

padding-left:左內邊距

注意: 後面跟幾個數值表示的意思是不一樣的。

值的個數表達意思
1個值 padding:上下左右邊距 比如padding: 3px; 表示上下左右都是3畫素
2個值 padding: 上下邊距 左右邊距 比如 padding: 3px 5px; 表示 上下3畫素 左右 5畫素
3個值 padding:上邊距 左右邊距 下邊距 比如 padding: 3px 5px 10px; 表示 上是3畫素 左右是5畫素 下是10畫素
4個值 padding:上內邊距 右內邊距 下內邊距 左內邊距 比如: padding: 3px 5px 10px 15px; 表示 上3px 右是5px 下 10px 左15px 順時針

三、外邊距(margin)

margin屬性用於設定外邊距。 設定外邊距會在元素之間建立“空白”,定義了元素與其他相鄰元素的距離, 這段空白通常不能放置其他內容。

margin-top:上外邊距

margin-right:右外邊距

margin-bottom:下外邊距

margin-left:上外邊距

margin:上外邊距 右外邊距 下外邊距 左外邊

取值順序跟內邊距相同。

擴充套件1:盒子水平居中

可以讓一個盒子實現水平居中,需要滿足一下兩個條件:

  1. 必須是塊級元素。
  2. 盒子必須指定了寬度(width)

然後就給左右的外邊距都設定為auto,就可使塊級元素水平居中。

.header{ width:960px; margin:0 auto;} /* margin:0 auto 相當於 left:auto;right:auto */
left:auto;
right:auto;

擴充套件2:清除元素的預設內外邊距

為了更方便地控制網頁中的元素,製作網頁時,可使用如下程式碼清除元素的預設內外邊距:

* {
   padding:0;         /* 清除內邊距 */
   margin:0;          /* 清除外邊距 */
}

Tips:行內元素是隻有左右外邊距的,是沒有上下外邊距的。 內邊距,在ie6等低版本瀏覽器也會有問題。我們儘量不要給行內元素指定上下的內外邊距就好了。

擴充套件3:外邊距合併

1、相鄰塊元素垂直外邊距的合併(外邊距垂直塌陷)

當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin-bottom,下面的元素有上外邊距margin-top,則他們之間的垂直間距不是margin-bottom與margin-top之和,而是兩者中的較大者。這種現象被稱為相鄰塊元素垂直外邊距的合併(也稱外邊距塌陷)。

解決方法:避免就好了。一般都是為一個元素新增margin-top或者 margin-bottom ,不必同時為兩個元素同時加。

2、巢狀塊元素垂直外邊距的合併

對於兩個巢狀關係的塊元素,如果父元素沒有上內邊距及邊框,則父元素的上外邊距會與子元素的上外邊距發生合併,合併後的外邊距為兩者中的較大者,即使父元素的上外邊距為0,也會發生合併。

解決方案:

  1. 可以為父元素定義1畫素的上邊框或上內邊距。

  2. 可以為父元素新增overflow:hidden。

  這裡主要是涉及到 BFC的問題,後面會詳細學習。 

四、內容(content)寬度和高度(width 和 height)

使用寬度屬性width和高度屬性height可以對盒子的大小進行控制。

width和height的屬性值可以為不同單位的數值或相對於父元素的百分比%,實際工作中最常用的是畫素值。

大多數瀏覽器,如Firefox、IE6及以上版本都採用了W3C規範,符合CSS規範的盒子模型的總寬度和總高度的計算原則是:

1   /*外盒尺寸計算(元素空間尺寸)*/
2   Element空間高度 = content height + padding + border + margin
3   Element 空間寬度 = content width + padding + border + margin
4   /*內盒尺寸計算(元素實際大小)*/
5   Element Height = content height + padding + border (Height為內容高度)
6   Element Width = content width + padding + border (Width為內容寬度)

注意:

  1、寬度屬性 width 和高度屬性 height 僅適用於塊級元素,對行內元素無效( img 標籤和 input除外)。

  2、計算盒子模型的總高度時,還應考慮上下兩個盒子垂直外邊距合併的情況。

  3、如果一個盒子沒有給定寬度/高度或者繼承父親的寬度/高度,則padding 不會影響本盒子大小

五、盒子模型佈局穩定性

根據穩定性來分,建議如下:

按照 優先使用 寬度 (width) 其次 使用內邊距(padding) 再次 外邊距(margin)。

width >  padding  >   margin

原因:

  1. margin 會有外邊距合併 還有 ie6下面margin 加倍的bug(討厭)所以最後使用。

  2. padding 會影響盒子大小, 需要進行加減計算(麻煩) 其次使用。

  3. width 沒有問題 我們經常使用寬度剩餘法 高度剩餘法來做。

六、盒子陰影

語法格式:

box-shadow:水平陰影 垂直陰影 模糊距離 陰影尺寸 陰影顏色  內/外陰影;

  1. 前兩個屬性是必須寫的。其餘的可以省略。

  2. 外陰影 (outset) 預設值,但是不能寫 ,想要內陰影寫上 inset 即可。

  3. 可以新增多個陰影,如同時新增內陰影和外陰影

Demo:

/* box-shadow:水平位置 垂直位置 模糊距離 陰影尺寸(影子大小) 陰影顏色  內/外陰影; */
box-shadow: 0 15px 30px  rgba(0, 0, 0, .4);