深入理解 `box-sizing: border-box;`:CSS 布局的利器

深入理解 `box-sizing: border-box;`:CSS 布局的利器

    • 默認行為
      • 示例代碼
    • 使用 `box-sizing: border-box;`
      • 示例代碼
    • 全局應用 `box-sizing: border-box;`
      • 示例代碼
    • 實際應用場景
      • 1. 表單布局
      • 2. 網格布局
    • 總結

在 CSS 中,box-sizing 屬性決定了元素的總寬度和高度是如何計算的。默認情況下,元素的寬度和高度只包括內容(content),不包括內邊距(padding)和邊框(border)。然而,box-sizing: border-box; 可以改變這種行為,使元素的寬度和高度包括內容、內邊距和邊框。本文將詳細介紹 box-sizing: border-box; 的用法及其在實際開發中的應用。

默認行為

在默認情況下,元素的寬度和高度只包括內容部分。內邊距和邊框會增加元素的總尺寸。

示例代碼

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Default Box Sizing</title><style>.default-box {width: 200px;height: 100px;padding: 20px;border: 5px solid #0078d7;background-color: #f3f3f3;}</style>
</head>
<body><div class="default-box">Default Box Sizing</div>
</body>
</html>

在這個示例中,.default-box 的總寬度是 200px(內容寬度) + 2 * 20px(內邊距) + 2 * 5px(邊框) = 250px。

使用 box-sizing: border-box;

當你將 box-sizing 設置為 border-box 時,元素的寬度和高度將包括內容、內邊距和邊框。這意味著你設置的寬度和高度將是元素的總尺寸。

示例代碼

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Border Box Sizing</title><style>.border-box {width: 200px;height: 100px;padding: 20px;border: 5px solid #0078d7;background-color: #f3f3f3;box-sizing: border-box;}</style>
</head>
<body><div class="border-box">Border Box Sizing</div>
</body>
</html>

在這個示例中,.border-box 的總寬度是 200px(內容寬度 + 內邊距 + 邊框),而不是 250px。這意味著你設置的寬度和高度將是元素的總尺寸。

全局應用 box-sizing: border-box;

為了確保所有元素都使用 border-box 尺寸計算,你可以在全局樣式中設置 box-sizing

示例代碼

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Global Border Box Sizing</title><style>* {box-sizing: border-box;}.global-box {width: 200px;height: 100px;padding: 20px;border: 5px solid #0078d7;background-color: #f3f3f3;}</style>
</head>
<body><div class="global-box">Global Border Box Sizing</div>
</body>
</html>

在這個示例中,所有元素都使用 border-box 尺寸計算,包括 .global-box。這樣可以確保所有元素的寬度和高度都包括內容、內邊距和邊框。

實際應用場景

1. 表單布局

在表單布局中,box-sizing: border-box; 可以幫助你更容易地控制輸入框的尺寸,避免因為內邊距和邊框導致的布局問題。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Form Layout</title><style>* {box-sizing: border-box;}.form-group {margin-bottom: 15px;}.form-group input {width: 100%;padding: 10px;border: 1px solid #ccc;border-radius: 4px;}</style>
</head>
<body><div class="form-group"><label for="username">Username</label><input type="text" id="username" name="username"></div><div class="form-group"><label for="password">Password</label><input type="password" id="password" name="password"></div>
</body>
</html>

2. 網格布局

在使用 CSS 網格布局時,box-sizing: border-box; 可以確保網格項的尺寸一致,避免因為內邊距和邊框導致的布局問題。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grid Layout</title><style>* {box-sizing: border-box;}.grid-container {display: grid;grid-template-columns: repeat(3, 1fr);gap: 10px;}.grid-item {padding: 20px;border: 1px solid #ccc;background-color: #f3f3f3;}</style>
</head>
<body><div class="grid-container"><div class="grid-item">Item 1</div><div class="grid-item">Item 2</div><div class="grid-item">Item 3</div><div class="grid-item">Item 4</div><div class="grid-item">Item 5</div><div class="grid-item">Item 6</div></div>
</body>
</html>

總結

box-sizing: border-box; 是一個非常有用的 CSS 屬性,可以幫助你更容易地控制元素的總尺寸。通過將 box-sizing 設置為 border-box,你可以確保元素的寬度和高度包括內容、內邊距和邊框,從而簡化布局和樣式設計。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894511.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSDN原力值提升秘籍:解鎖社區活躍新姿勢

在 CSDN 這個技術交流的大舞臺上&#xff0c;原力值不僅是個人活躍度的象征&#xff0c;更是開啟更多權益與福利的鑰匙。最近&#xff0c;我出于自身需求&#xff0c;一頭扎進了提升原力值的研究中&#xff0c;經過多方探索與資料整理&#xff0c;現在就迫不及待地把這些干貨分…

計算機網絡——流量控制

流量控制的基本方法是確保發送方不會以超過接收方處理能力的速度發送數據包。 通常的做法是接收方會向發送方提供某種反饋&#xff0c;如&#xff1a; &#xff08;1&#xff09;停止&等待 在任何時候只有一個數據包在傳輸&#xff0c;發送方發送一個數據包&#xff0c;…

2024美團春招硬件開發筆試真題及答案解析

目錄 一、選擇題 1、在 Linux,有一個名為 file 的文件,內容如下所示: 2、在 Linux 中,關于虛擬內存相關的說法正確的是() 3、AT89S52單片機中,在外部中斷響應的期間,中斷請求標志位查詢占用了()。 4、下列關于8051單片機的結構與功能,說法不正確的是()? 5、…

【C語言入門】解鎖核心關鍵字的終極奧秘與實戰應用(三)

目錄 一、auto 1.1. 作用 1.2. 特性 1.3. 代碼示例 二、register 2.1. 作用 2.2. 特性 2.3. 代碼示例 三、static 3.1. 修飾局部變量 3.2. 修飾全局變量 3.3. 修飾函數 四、extern 4.1. 作用 4.2. 特性 4.3. 代碼示例 五、volatile 5.1. 作用 5.2. 代碼示例…

Kafka分區策略實現

引言 Kafka 的分區策略決定了生產者發送的消息會被分配到哪個分區中&#xff0c;合理的分區策略有助于實現負載均衡、提高消息處理效率以及滿足特定的業務需求。 輪詢策略&#xff08;默認&#xff09; 輪詢策略是 Kafka 默認的分區策略&#xff08;當消息沒有指定鍵時&…

c++ stl 遍歷算法和查找算法

概述&#xff1a; 算法主要由頭文件<algorithm> <functional> <numeric> 提供 <algorithm> 是所有 STL 頭文件中最大的一個&#xff0c;提供了超過 90 個支持各種各樣算法的函數&#xff0c;包括排序、合并、搜索、去重、分解、遍歷、數值交換、拷貝和…

2.2 實現雙向鏈表的快速排序

實現一個雙向鏈表的快速排序。 1>程序代碼 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h>…

力扣動態規劃-19【算法學習day.113】

前言 ###我做這類文章一個重要的目的還是記錄自己的學習過程&#xff0c;我的解析也不會做的非常詳細&#xff0c;只會提供思路和一些關鍵點&#xff0c;力扣上的大佬們的題解質量是非常非常高滴&#xff01;&#xff01;&#xff01; 習題 1.矩形中移動的最大次數 題目鏈接…

Gurobi基礎語法之 addConstr, addConstrs, addQConstr, addMQConstr

在新版本的 Gurobi 中&#xff0c;向 addConstr 這個方法中傳入一個 TempConstr 對象&#xff0c;在模型中就會根據這個對象生成一個約束。更重要的是&#xff1a;TempConstr 對象可以傳給所有addConstr系列方法&#xff0c;所以下面先介紹 TempConstr 對象 TempConstr TempC…

五子棋對弈

問題描述 "在五子棋的對弈中&#xff0c;友誼的小船說翻就翻&#xff1f;" 不&#xff01;對小藍和小橋來說&#xff0c;五子棋不僅是棋盤上的較量&#xff0c;更是心與心之間的溝通。這兩位摯友秉承著"友誼第一&#xff0c;比賽第二"的宗旨&#xff0c;決…

使用 HTTP::Server::Simple 實現輕量級 HTTP 服務器

在Perl中&#xff0c;HTTP::Server::Simple 模塊提供了一種輕量級的方式來實現HTTP服務器。該模塊簡單易用&#xff0c;適合快速開發和測試HTTP服務。本文將詳細介紹如何使用 HTTP::Server::Simple 模塊創建和配置一個輕量級HTTP服務器。 安裝 HTTP::Server::Simple 首先&…

在AI技術深度滲透的背景下,2025年傳媒互聯網行業的哪些細分場景和產品形態將迎來爆發式增長?

一、AI技術重構傳媒互聯網行業版圖&#xff1a;從底層邏輯到應用場景 近年來&#xff0c;AI技術已從實驗室走向商業化落地&#xff0c;而傳媒互聯網行業因其龐大的用戶基數、高頻交互場景和豐富的數據積累&#xff0c;成為AI應用的主戰場。根據華源證券最新行業周報&#xff0…

Docker Hub 鏡像 Pull 失敗的解決方案

目錄 引言一、問題二、原因三、解決方法四、參考文獻 引言 在云原生技術火熱的當下&#xff0c;Docker可謂是其基礎&#xff0c;由于其簡單以及方便性&#xff0c;讓開發人員不必再為環境配置問題而傷腦筋&#xff0c;因為可將其看作一個虛擬機程序去理解。所以掌握好它可謂是…

neo4j-community-5.26.0 create new database

1.edit neo4j.conf 把 # The name of the default database initial.dbms.default_databasehonglouneo4j # 寫上自己的數據庫名稱 和 # Name of the service #5.0 server.windows_service_nameneo4j #4.0 dbms.default_databaseneo4j #dbms.default_databaseneo4jwind serve…

unity實現回旋鏢函數

最近學習unity2D&#xff0c;想實現一個回旋鏢武器&#xff0c;發出后就可以在角色周圍回旋。 一、目標 1.不是一次性的&#xff0c;扔出去、返回、沒有了&#xff1b;而是扔出去&#xff0c;返回到角色后方相同距離&#xff0c;再次返回&#xff1b;再次返回&#xff0c;永遠…

【C++基礎】字符串/字符讀取函數解析

最近在學C以及STL&#xff0c;打個基礎 參考&#xff1a; c中的char[] ,char* ,string三種字符串變量轉化的兼容原則 c讀取字符串和字符的6種函數 字符串結構 首先明確三種字符串結構的兼容關系&#xff1a;string>char*>char [] string最靈活&#xff0c;內置增刪查改…

求一個數的數根(高精度)

上一期我們講的是求一個數的數根&#xff0c;和本期唯一不同的是&#xff0c;數據范圍不同了&#xff0c;上一期這個數是小于等于10的18次方的&#xff0c;這一期是小于等于10的1000次方的&#xff0c;開一個變量&#xff1f;肯定不行&#xff0c;我們需要再開一個數組&#xf…

SpringBoot源碼解析(九):Bean定義接口體系

SpringBoot源碼系列文章 SpringBoot源碼解析(一)&#xff1a;SpringApplication構造方法 SpringBoot源碼解析(二)&#xff1a;引導上下文DefaultBootstrapContext SpringBoot源碼解析(三)&#xff1a;啟動開始階段 SpringBoot源碼解析(四)&#xff1a;解析應用參數args Sp…

Vue 3 30天精進之旅:Day 13 - 路由守衛

在構建單頁面應用時&#xff0c;路由守衛是一個非常重要的概念。它允許我們在路由進入或離開時執行一些操作&#xff0c;比如驗證用戶權限、處理數據加載、執行導航確認等。Vue Router提供了多種類型的路由守衛&#xff0c;使我們能夠靈活地控制路由的行為。在今天的學習中&…

【TypeScript】基礎:數據類型

文章目錄 TypeScript一、簡介二、類型聲明三、數據類型anyunknownnervervoidobjecttupleenumType一些特殊情況 TypeScript 是JavaScript的超集&#xff0c;代碼量比JavaScript復雜、繁多&#xff1b;但是結構更清晰 一、簡介 為什么需要TypeScript&#xff1f; JavaScript的…