CSS 盒模型與box-sizing

来源:https://www.cnblogs.com/guolao/archive/2018/05/25/9088465.html
-Advertisement-
Play Games

一、盒模型 一個web頁面由許多html元素組成,而每一個html元素都可以表示為一個矩形的盒子,CSS盒模型正是描述這些矩形盒子的存在。 MDN的描述: When laying out a document, the browser's rendering engine represents ea ...


一、盒模型

一個web頁面由許多html元素組成,而每一個html元素都可以表示為一個矩形的盒子,CSS盒模型正是描述這些矩形盒子的存在。

MDN的描述:

When laying out a document, the browser's rendering engine represents each element as a rectangular box according to the standard CSS basic box model. CSS determines the size, position, and properties (color, background, border size, etc.) of these boxes.

Every box is composed of four parts (or areas), defined by their respective edges: the content edgepadding edgeborder edge, and margin edge.

CSS盒模型有四條邊:外邊距邊、邊框邊、內填充邊、內容邊(Content edge、Padding edge、Border edge和Margin edge),四條邊由內到外把它劃分為四個區域:內容區域、內邊距區域、邊框區域、外邊距區域(Content area、Padding area、Border area和Margin area)。

box_model

  • 內容區域(content area )是包含元素真實內容的區域。
  • 內邊距區域(padding area) 延伸到包圍padding的邊框。如果content area設置了背景、顏色或者圖片,這些樣式將會延伸到padding上。
  • 邊框區域(border area )是包含邊框的區域,擴展了內邊距區域。
  • 外邊距區域(margin area)用空白區域擴展邊框區域,以分開相鄰的元素。

通過CSS屬性(width、height、padding、border和margin)來控制它們的尺寸。

二、box-sizing(css3屬性)

1.box-sizing的值

1 /* 關鍵字 值 */
2 box-sizing: content-box;/*預設值*/
3 box-sizing: border-box;
4 
5 /* 全局 值 */
6 box-sizing: inherit;
7 box-sizing: initial;
8 box-sizing: unset;

2.box-sizing的作用

box-sizing的作用就是告訴瀏覽器,使用的盒模型是W3C盒模型,還是IE盒模型。

a.當 box-sizing 的值為 content-box(預設值) 時,其尺寸計算公式為:

width = content-width;
height = content-height;

b.當 box-sizing 的值為 border-box 時,其尺寸計算公式為:

width = content-width + padding-left + padding-right + border-left-width + border-right-width;
height = content-height + padding-top + padding-bottom + border-top-height + border-bottom-height;

無論取何值,盒子尺寸是一樣的,改變的是盒子的容量(盒子內部的width和height的計算方式)。

w3c_and_ie_box_model

補充:IE6、7為W3C盒模型。

3.對於box-sizing屬性值的選擇

在項目里,究竟該使用哪種盒模型?我也不知道啊

在MDN上有這樣一句話:

Some experts recommend that web developers should consider routinely applying box-sizing: border-box to all elements.

一些專家甚至建議所有的Web開發者們將所有的元素的 box-sizing 都設為 border-box。

Twitter的開源框架Bootstrap3就全局設置了box-sizing: border-box,由此可見IE盒模型的是比較受歡迎的。

補充:

W3C在CSS3中,加入了 calc() 函數。

CSS函數calc()可以用在任何一個需要<length><frequency><angle><time><number>、或<integer>的地方。有了calc(),你就可以通過計算來決定一個CSS屬性的值了。

/* property: calc(expression) */
width: calc(100% - 80px);

使用 calc() 函數,我們可以在 content-box 里實現 border-box,相對的,在 border-box 里實現 content-box 也是可以的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 官方示例 https://fengyuanchen.github.io/cropper/ 參考:https://segmentfault.com/a/1190000012344970 ...
  • 導入控制項 效果就是 點擊一次上傳, 當上傳操作結束後 才能操作界面 ...
  • 日常代碼一般提交到github比較多,但我還是鐘愛馬爸爸,沒錯就是碼雲。 碼雲是中文版的代碼托管的網站,不存在打開網速問題,使用也蠻方便的,日常自己保存托管代碼已經足夠,平時使用git提交代碼到碼雲是非常方便的,具體也就一下幾個步驟: 1、註冊碼雲賬號,新建一個屬於自己的項目。 2、安裝git,一定 ...
  • 日常項目中經常會用到百度地圖或者echarts圖標展示,今天給大家展示的是如何在react開發項目中使用百度echars的地圖展示,把中國地圖分為東北大區、華東大區、華南大區、華西大區、華中大區以及華北大區並用顏色標識方便識別。 最終展示效果如下: 我是直接用的react官方提供的create-re ...
  • 前言 最近在項目中遇到了兩個需求,並且都用到了H5的這兩種儲存方式 1 sessionStorage 需求:我從後臺得到一個URL的時候,我根據路由判斷用戶一進入頁面顯示出一個蒙層,當用戶進入當前頁面的其他頁面再返回時需要使蒙層消失,這時候我就使用到了sessionStorage以及它的特性 瀏覽器 ...
  • 現在的項目需求很簡單,當進入一個頁面的時候,如果沒登錄,則跳轉到登錄頁面,如果登錄了則直接到對應頁面。 koa2寫的項目,使用koa-passport,koa-session,根據koa-passport的 router.js: passport.js: 問題:目前用 ...
  • 一)什麼是JavaScript【以下簡稱JS】 JS是 (1)基於對象 JS本身就有一些現成的對象可供程式員使用,例如:Array,Math,String。。。 JS並不排除你可以自已按一定的規則創建對象 (2)事件驅動 JS代碼寫好後,需要外界觸發後,方可運行,例如:單擊事件,定時執行,。。。 ( ...
  • 原文鏈接地址:https://www.cnblogs.com/wangmeijian/p/4562304.html :first-child 選擇器用於選取屬於其父元素的首個子元素的指定選擇器。——w3school 嗯,乍一看好像說的不是很明白,因此這個選擇器很容易讓人誤解,通常會有兩種誤解:誤解一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...