目錄
This is a headline
This is a secondary headline
首頁 web前端 css教學 管理CSS框模型

管理CSS框模型

Feb 17, 2025 am 10:49 AM

CSS 盒模型:理解網頁佈局的關鍵

理解 CSS 最重要的點在於:一切皆為盒子。更具體地說,文檔中的每個元素都會生成一個盒子。這個盒子可以是塊級盒子,也可以是內聯級盒子。盒子的類型決定了元素如何影響頁面佈局。 CSS 盒模型是一個用於描述 HTML 元素佈局和大小的概念。每個元素都包含一個用於其內容、填充、邊框和邊距的盒子。這些盒子組合在一起,決定了元素內容的佈局以及相鄰元素如何與其並排顯示:

Managing the CSS Box Model

元素是否創建盒子以及創建哪種類型的盒子將取決於標記語言。 CSS 發展成為一種為 HTML 文檔設置樣式的方式,因此,許多 CSS 可視化渲染模型都源於 HTML 區分塊級元素和內聯元素。默認情況下,諸如 <code><p></p><section></section> 之類的元素會創建塊級盒子,但 <a></a><span></span><em></em> 會創建內聯盒子。另一方面,SVG 不使用盒模型,因此大多數與佈局相關的 CSS 屬性都不能與 SVG 一起使用。

塊級盒子會創建新的內容塊,如圖 4.1 所示。塊級盒子的渲染是垂直的,根據其源順序排列,並且(除了表格之外)會擴展以填充其包含元素的可用寬度。這被稱為普通流。塊級盒子的 display 值為 blocklist-itemtable 或任何 table-* 值(例如,table-cell)。

Managing the CSS Box Model

圖 4.1. 包含元素(灰色區域)內的 h1、p、ul 和 table 元素的塊級盒子

相比之下,內聯級盒子不會形成新的內容塊。相反,這些盒子構成塊級盒子內的行。它們水平顯示並填充包含盒子的寬度,如果需要,會換行,如圖 4.2 所示。內聯級盒子的 display 值為 inlineinline-blockinline-tableruby

Managing the CSS Box Model

圖 4.2. 應用了 margin: 1em 和 padding: 5px 的內聯盒子的示例

但是盒子的尺寸是如何計算的呢?這就是事情變得更複雜的地方。如圖 4.3 所示,盒子尺寸是盒子內容區域、填充寬度和邊框寬度的總和。邊距寬度為元素創建邊距盒子,並影響文檔中的其他元素;但是,邊距寬度對盒子本身的尺寸沒有影響。

CSS 盒模型图示 4

圖 4.3. CSS 2.1 盒模型

例如,一個具有 width: 300pxpadding: 20pxborder: 10px<code><p></p> 元素的計算寬度為 360 像素。這是其寬度、左右填充和左右邊框寬度屬性的總和。要創建一個寬度為 300 像素、填充為 20 像素和邊框為 10 像素的元素,寬度需要設置為 240px。大多數主流瀏覽器就是這樣計算寬度的。為了解決瀏覽器之間競爭模型的部分問題,CSS 工作組引入了 box-sizing 屬性。它允許我們選擇自己喜歡的盒模型實現,並在處理響應式設計時大大簡化計算。

使用 box-sizing 選擇盒模型

box-sizing 屬性在 CSS 基本用戶界面模塊級別 3 規範中定義。它有兩個可能的值:content-boxborder-box。最初,box-sizing 的值為 content-box。使用此值時,設置元素的 widthheight 屬性會影響其內容區域的大小。這與 CSS 2.1 規範中定義的行為相匹配,並且是現代瀏覽器中的默認行為(如圖 4.4 所示)。將 box-sizing 的值設置為 border-box 會產生一些神奇的效果。現在,widthheight 的值將應用於外邊框邊緣而不是內容區域。邊框和填充繪製在元素框內,與舊的 Internet Explorer 5.5 行為匹配。讓我們來看一個混合使用百分比寬度和 px 單位的填充和邊框的示例:

<div class="wrapper">
  <article>
    <h2 id="This-is-a-headline">This is a headline</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing ...</p>
  </article>
  <aside>
    <h2 id="This-is-a-secondary-headline">This is a secondary headline</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing ...</p>
  </aside>
</div>
登入後複製
登入後複製

我們的<article><aside> 元素都應用了以下CSS,這為我們提供了圖4.5 中所示的佈局,其中第一個元素的寬度為60%,第二個元素的寬度為40%:

article, aside {
  background: #FFEB3B;
  border: 10px solid #9C27B0;
  float: left;
  padding: 10px;
}
article {
  width: 60%;
}
aside {
  width: 40%;
}
登入後複製
登入後複製

Managing the CSS Box Model

圖 4.5. 元素使用 box-sizing: content-box

默認情況下,<aside><article>box-sizing 值都為 content-boxborder-widthpadding 值會為每個元素的寬度增加 40 像素,這會大大影響 60%/40% 的分割。現在讓我們將 box-sizing: border-box 添加到 <article><aside> 元素:

article, aside {
  box-sizing: border-box;
}
登入後複製

您可以在圖 4.6 中看到變化:元素具有相同的寬度,但 box-sizing: border-box 意味著寬度包括邊框和填充。因為 width 屬性應用於邊框邊緣而不是內容區域,所以我們的元素現在並排排列。

Managing the CSS Box Model

圖 4.6. 元素使用 box-sizing: border-box

我建議您在項目中使用 box-sizing: border-box。它使生活更輕鬆,因為無需計算寬度值來考慮填充和邊框的值,並且盒子行為更可預測。應用 box-sizing: border-box 的最佳方法是使用重置規則。以下示例來自 Chris Coyier 的 CSS-Tricks 文章“繼承 box-sizing 可能略微更好——最佳實踐”:

<div class="wrapper">
  <article>
    <h2 id="This-is-a-headline">This is a headline</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing ...</p>
  </article>
  <aside>
    <h2 id="This-is-a-secondary-headline">This is a secondary headline</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing ...</p>
  </aside>
</div>
登入後複製
登入後複製

這默認情況下將 border-box 大小應用於每個元素,而不會影響項目現有部分的 box-sizing 行為。如果您知道不會有依賴於 content-box 行為的第三方或舊版組件,則可以簡化這些規則:

article, aside {
  background: #FFEB3B;
  border: 10px solid #9C27B0;
  float: left;
  padding: 10px;
}
article {
  width: 60%;
}
aside {
  width: 40%;
}
登入後複製
登入後複製

管理盒模型只是理解如何創建複雜佈局的一個要素。

關於 CSS 盒模型的常見問題解答 (FAQ)

(此處省略 FAQ 部分,因為篇幅過長,且與偽原創目標不符。FAQ 部分內容可以根據需要自行添加或修改。)

以上是管理CSS框模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1242
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

如何在WordPress主題中構建VUE組件 如何在WordPress主題中構建VUE組件 Apr 11, 2025 am 11:03 AM

內聯式模板指令使我們能夠將豐富的VUE組件構建為對現有WordPress標記的逐步增強。

當您看上去時,CSS梯度變得更好 當您看上去時,CSS梯度變得更好 Apr 11, 2025 am 09:16 AM

我關注的一件事是Lea Verou&#039; s conic-Gradient()Polyfill的功能列表是最後一項:

靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

See all articles