詳解CSS中的Box Model盒屬性的使用

2022-09-24 17:36:18 字數 1946 閱讀 4338

頁面上顯示的每個元素(包括內聯元素)都可以看作乙個盒子,即盒模型( box model )。請看 chrome devtools 裡的截圖:

可以顯而易見的看出盒模型由 4 部分組成。從內到外分別是:

content -> padding -> border -> margin

按理來說乙個元素的寬度(高度以此類推)應該這樣計算:

總寬度 = margin-left + border-left + padding-left + width + padding-right + border-right + margin-right

但是不同瀏覽器(你沒有猜錯,就是那個與眾不同的瀏覽器)對寬度的詮釋不一程式設計客棧樣。符合 w3c 標準的瀏覽器認為乙個元素的寬度只等於其 content 的寬度,其餘都要額外算。於是你規定乙個元素:

css code複製內容到剪貼簿

則他最終的寬度應為:

寬度 = width(200px) + padding(10px * 2) + border(5px * 2) + margin(20px * 2) =  270px;

而在 ie(低於ie9) 下,最終寬度為:

寬度 = width(200px) + margin(20px * 2) = 240px;

我個人覺得 ie 的更符合人類思維,畢竟 padding 叫內邊距,邊框算作額外的寬度也說不下去。w3c 最後為了解決sdjwqinop這個問題,在 css3 中加了 box-sizing 這個屬性。當我們設定 box-sizing: border-box;  時,border 和 padding 就被包含在了寬高之內,和 ie 之前的標準是一樣的。所以,為了避免你同乙份 css 在不同瀏覽器下表現不同,最好加上:

css code複製內容到剪貼簿

&nb程式設計客棧sp;

這裡還有兩種特殊情況:

無寬度 —— 絕對定位(position: absolute;) 元素sdjwqinop

無寬度 —— 浮動(float) 元素

它們在頁面上的表現均不佔據空間(脫離普通流,感覺像浮在頁面上層一樣,移動它們不影響其他元素的定位)。

css3 flexible box model

相關屬值:

box-orient 確定子元素的方向

box-flex  按比例分配父標籤的寬度或高度空間。且值至少為1時起作用。當子元素中有寬度值的時候,此元素就定寬處理,剩下的空間再按比例分配。

box-direction 用來確定子元素的排列順序

box-align 決定了垂直方向空間使用,也就是垂直方向上的對齊表現。

box-pack 決定了父標籤水平空間的使用

語法:box-align: start|end|center|baseline|stretch;

box-direction: normal|reverse|inherit;

box-flex: value;

box-flex-group: integer;

box-lines: single|multiple;

box-ordinal-group: integer;

box-orient: horizontal(水平) | vertical(垂直) | inline-axis | block-axis | inherit

box-pack: start|end|center|justify(兩端對齊);

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

box-shadow: h-shadow v-shadow blur spread color inset;

例子:使用靈活的盒模型容器內平均分配子元素很容易:

css code複製內容到剪貼簿

例項:css 3 flexible box model

注意:外層必須具有寬度。內層必須具有bfc。

本文標題: 詳解css中的box model盒屬性的使用

本文位址:

CSS學習 CSS 框模型 Box Model

所有html元素可以看作盒子,在css中,box model 這一術語是用來設計和布局時使用。css盒模型本質上是乙個盒子,封裝周圍的html元素,它包括 邊距,邊框,填充,和實際內容。盒模型允許我們在其它元素和周圍元素邊框之間的空間放置元素。下面的說明了框模型 box model 不同部分的說明 ...

CSS的盒子模型(Box Model)

盒子模型 box model 是 css 的核心,現代 web 布局設計簡單說就是一堆盒子的排列與巢狀,掌握了盒子模型與它們的擺放控制,會發現再複雜的頁面也不過如此。然而,任何美好的事物都有缺憾,盒子模型有兩種不同的詮釋,一種來自 ie6,一種來自w3c 標準瀏覽器。盒子模型 下圖就是乙個典型的盒子...

CSS盒子模型(Box Model)

所有html元素可以看作盒子,在css中,box model 這一術語是用來設計和布局時使用。css盒模型本質上是乙個盒子,封裝周圍的html元素,它包括 邊距,邊框,填充,和實際內容。盒模型允許我們在其它元素和周圍元素邊框之間的空間放置元素。下面的說明了盒子模型 box model 不同部分的說明...