CSS 盒模型
盒模型
CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成:
-
内容区(Content area):
-
这个区域包含了元素的实际内容,比如文本、图片等。
-
它是由
width
和height
属性定义的。
-
-
内边距(Padding):
-
内边距位于内容区的四周,用来在内容和其他部分之间创建空间。
-
它可以通过设置
padding
属性来调整,包括padding-top
,padding-right
,padding-bottom
, 和padding-left
。
-
-
边框(Border):
-
边框围绕着内边距和内容区,用来划分和装饰元素。
-
可以通过
border
属性设置边框的样式、宽度和颜色。
-
-
外边距(Margin):
-
外边距位于边框之外,用于分隔相邻的元素。
-
可以通过
margin
属性控制,包括margin-top
,margin-right
,margin-bottom
, 和margin-left
。
-
默认情况下,块级元素的宽度为父元素的100%,而高度则根据内容自动调整。但是,当设置了width
和height
时,这些尺寸只适用于内容区。如果需要考虑内边距、边框和外边距,则可以使用box-sizing
属性。例如:
-
box-sizing: content-box;
(默认值):width
和height
仅适用于内容区。 -
box-sizing: border-box;
:width
和height
包括内边距和边框。
理解盒模型对于正确地设计和调试网页布局至关重要。通过合理设置这四个部分,开发者可以精确地控制网页上各个元素的位置和外观。
什么是“盒子”
初学 CSS 的朋友,一开始学 CSS 基础知识的时候一定学过 padding
border
和margin
,即内边距、边框和外边距。它们三者就构成了一个“盒子”。就像我们收到的快递,本来买了一部小小的手机,收到的却是那么大一个盒子。因为手机白色的包装盒和手机机器之间有间隔层(内边距),手机白色盒子有厚度,虽然很薄(边框),盒子和快递箱子之间还有一层泡沫板(外边距)。这就是一个典型的盒子。
如上图,真正的内容就是这些文字,文字外围有 10px 的内边距,5px 的边框,10px 的外边距。看到盒子了吧?
盒子模型的宽度如何计算
固定宽度的盒子
<div style="padding:10px; border:5px solid blue; margin: 10px; width:300px;">之前看过一篇文章,叫做《浏览器工作原理:新式网络浏览器幕后揭秘》,文章言简意赅的介绍的浏览器的工作过程,web前端
</div>
如上图,得到网页效果之后,我们可以用截图工具来量一下文字内容的宽度。发现,文字内容的宽度刚好是 300px,也就是我们设置的宽度。
因此,在盒子模型中,我们设置的宽度都是内容宽度,不是整个盒子的宽度。而整个盒子的宽度是:(内容宽度 + border
宽度 + padding
宽度 + margin
宽度)之和。这样我们改四个中的其中一个,都会导致盒子宽度的改变。这对我们来说不友好。
没关系,这个东西不友好早就有人发现了,而且已经解决,下文再说。
充满父容器的盒子
默认情况下,div
是display:block
,宽度会充满整个父容器。如下图:
<div style="padding:10px; border:5px solid blue; margin: 10px; width:300px;">之前看过一篇文章,叫做《浏览器工作原理:新式网络浏览器幕后揭秘》,文章言简意赅的介绍的浏览器的工作过程,web前端之前看过一篇文章,叫做《浏览器工作原理:新式网络浏览器幕后揭秘》,文章言简意赅的介绍的浏览器的工作过程,web前端
</div>
但是别忘记,这个 div 是个盒子模型,它的整个宽度包括(内容宽度 + border
宽度 + padding
宽度 + margin
宽度),整个的宽度充满父容器。
问题就在这里。如果父容器宽度不变,我们手动增大margin
、border
或padding
其中一项的宽度值,都会导致内容宽度的减少。极端情况下,如果内容的宽度压缩到不能再压缩了(例如一个字的宽度),那么浏览器会强迫增加父容器的宽度。这可不是我们想要看到的。
包裹内容的盒子
这种情况下比较简单,内容的宽度按照内容计算,盒子的宽度将在内容宽度的基础上再增加(padding
宽度 + border
宽度 + margin
宽度)之和。
<div style="padding:10px; border:5px solid blue; margin: 10px; width:300px;">之前看过一篇文章,叫做《浏览器工作原理:新式网络浏览器幕后揭秘》
</div>
box-sizing:border-box
前面提到,为盒子模型设置宽度,结果只是设置了内容的宽度,这个不合理。如何解决这一问题?答案就是为盒子指定样式:**box-sizing:border-box
**。
<div style="padding:10px; border:5px solid blue; margin: 10px; width:300px; box-sizing:border-box;">之前看过一篇文章,叫做《浏览器工作原理:新式网络浏览器幕后揭秘》
</div>
上图中,为div
设置了box-sizing:border-box
之后,300px 的宽度是内容 + padding
+ 边框的宽度(不包括margin
),这样就比较符合我们的实际要求了。建议大家在为系统写 CSS 时候,第一个样式是:
* {box-sizing:border-box;
}
大名鼎鼎的 Bootstrap 也把box-sizing:border-box
加入到它的*
选择器中,我们为什么不这样做呢?
纵向 margin 重叠
这里提到 margin,就不得不提一下 margin 的这一特性——纵向重叠。如<p>
的纵向 margin 是 16px,那么两个<p>
之间纵向的距离是多少?—— 按常理来说应该是 16 + 16 = 32px,但是答案仍然是 16px。因为纵向的 margin 是会重叠的,如果两者不一样大的话,大的会把小的“吃掉”。
相关文章:
![](https://i-blog.csdnimg.cn/img_convert/7565617949d54753eaf80a47867995b4.png)
CSS 盒模型
盒模型 CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成: 内容区(Content areaÿ…...
![](https://i-blog.csdnimg.cn/blog_migrate/80136148c4194ffac36afd146a82e7a1.png)
[0405].第05节:搭建Redis主从架构
Redis学习大纲 一、3主3从的集群配置: 1.1.集群规划 1.分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下: 2.每组是一主一从&#x…...
![](https://i-blog.csdnimg.cn/direct/c45ea20fc1a04089927927c983f4f843.png)
6 分布式限流框架
限流的作用 在API对外互联网开放的情况下,是无法控制调用方的行为的。当遇到请求激增或者黑客攻击的情况下,会导致接口占用大量的服务器资源,使得接口响应效率的降低或者超时,更或者导致服务器宕机。 限流是指对应用服务进行限制…...
![](https://i-blog.csdnimg.cn/direct/393e7572536740c78fbcc4dc0f524ac2.png)
sosadmin相关命令
sosadmin命令 以下是本人翻译的官方文档,如有不对,还请指出,引用请标明出处。 原本有个对应表可以跳转的,但是CSDN的这个[](#)跳转好像不太一样,必须得用html标签,就懒得改了。 sosadmin help 用法 sosadm…...
![](https://i-blog.csdnimg.cn/direct/f4a7ae796e6e4f4f9f731b30b8fed96f.png)
关于大数据的基础知识(四)——大数据的意义与趋势
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(四&a…...
![](https://i-blog.csdnimg.cn/direct/db0b39702c0740089717072d13644716.png)
【EI,Scopus检索 | 往届均已检索见刊】第四届智能系统、通信与计算机网络国际学术会议(ISCCN 2025)
重要信息: 大会官网:更多详情【论文投稿】 截稿时间:以官网信息为准 大会时间:2025年2月21-23日 接受/拒稿通知:投稿后3-5个工作日内 收录检索:EI,Scopus 出版信息: 本会议所有…...
![](https://www.ngui.cc/images/no-images.jpg)
smplx blender插件笔记
目录 liunx安装: liunx安装: pip install smplx 这个创建模型报错 SMPL_blender_addon...
![](https://i-blog.csdnimg.cn/direct/2a4dacb754a74d40bb0658f225877fe7.png#pic_center)
【算法】移除元素
今天讲的是力扣题目的题解: 力扣题目: 72.移除元素 题目描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不…...
![](https://www.ngui.cc/images/no-images.jpg)
【后端面试总结】设计一个分布式锁需要考虑哪些东西
分布式锁是我们在分布式场景中经常用到的一种技术,在后端面试中也是出镜率很高,那么我们设计分布式锁的时候应该从那几方面去考虑呢 实现分布式锁需要考虑的点 设置超时时间 设置超时时间的目的是为了避免这个场景:进程A拿了锁,…...
![](https://www.ngui.cc/images/no-images.jpg)
awr报告无法生成:常见案例与解决办法
awr报告无法生成:常见案例与解决办法 STATISTICS_LEVEL设置过低数据库打开状态不对主库隐含参数设置错误MMON子进程被SuspendSYS模式统计信息过期WRH$_SQL_PLAN表数据量太大AWR绑定变量信息收集超时撞上数据库Bug 9040676STATISTICS_LEVEL设置过低 STATISTICS_LEVEL设置为BAS…...
![](https://www.ngui.cc/images/no-images.jpg)
Hadoop 生态之 kerberos
参考链接 https://winway.github.io/2022/04/02/kerberos-ranger/ https://ieevee.com/tech/2016/06/22/ranger-2.html kerberos解决”who are you“的问题 ranger解决”what you can do“的问题 LDAP 轻型目录访问协议(英文:Lightweight Director…...
![](https://www.ngui.cc/images/no-images.jpg)
【文件I/O】文件持久化
这篇文章详细讲解的是 理解在Linux操作系统中输入/输出(I/O)编程与文件操作的关系。 在计算机编程中,输入/输出编程(I/O 编程) 是一个重要的概念,指的是通过程序与外部世界(如用户输入、文件、…...
![](https://i-blog.csdnimg.cn/direct/d11547e6ff0946ad9b7d2b891a28d06a.png)
USB学习——基本概念
文章目录 USB(Universal Serial Bus)概述USB系统的描述USB总线传输方式USB的拓扑结构 USB的连接模型USB控制器及分类USB描述符USB 端点USB枚举过程USB 四种传输类型USB 事务批量传输(Bulk)中断传输(Interrupt)等时传输(Isochronous)控制传输(Control)端点…...
![](https://i-blog.csdnimg.cn/direct/06a111f36a0d4a8a85d9df2b1ca3860e.png)
python-leetcode-三数之和
15. 三数之和 - 力扣(LeetCode) class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort() # 排序n len(nums)res []for i in range(n):# 剪枝:如果当前数 > 0,三数之和不可能为 0if nums[i]…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot整合拦截器
1.首先创建拦截器类: package com.example.interceptor;import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.sp…...
![](https://i-blog.csdnimg.cn/direct/094bec39f44d4f7e898d29aff13fd3ec.png)
B树与B+树:数据库索引的秘密武器
想象一下,你正在构建一个超级大的图书馆,里面摆满了各种各样的书籍。B树和B树就像是两种不同的图书分类和摆放方式,它们都能帮助你快速找到想要的书籍,但各有特点。 B树就像是一个传统的图书馆摆放方式: 1. 书籍摆放&…...
![](https://www.ngui.cc/images/no-images.jpg)
Lua语言中常用的字符串操作函数
string.sub(s, i, j) 功能: 截取字符串 s 中从位置 i 到位置 j 的子字符串。 local s "Hello, Lua!" print(string.sub(s, 1, 5)) -- 输出 "Hello" print(string.sub(s, 8, 11)) -- 输出 "Lua!" string.len(s) 功能:将字符串长度…...
![](https://www.ngui.cc/images/no-images.jpg)
HOW - Form 表单确认校验两种模式(以 Modal 场景为例)
目录 一、背景二、具体1. 模式一:点击确认进行校验提示2. 模式二:确认按钮依赖于表单内容实现说明 一、背景 基于react、antd form分别实现如下两种模式: 1、一个 Modal,点击确认进行校验提示2、一个 Modal,确认按钮…...
![](https://i-blog.csdnimg.cn/direct/c0ddb912155f4879bb65d30e9576c808.png)
LabVIEW部署Web服务
目录 LabVIEW部署Web服务1、创建项目2、创建Web服务3、新建WebVI3.1、使用GET方法3.2、使用POST方法 4、 部署和对应URL4.1、应用程序:80804.2、本地调试:80094.3、NI Web服务器:9090(禁用) 5、测试5.1、测试GET方法5.2、测试POST方法 6、实际…...
![](https://i-blog.csdnimg.cn/direct/3c2ab220a9114f0295142e6b8e3cd3c4.png)
进程件通信——网络通信——TCP
网络抓包工具:wireshark 抓取经过设备网卡的数据。 操作: 1. sudo wireshark 2. 选择要抓取的网卡----》any 3. 设置抓取的过滤条件 4. 进行网络通信 5. 分析数据 UDP: 用户数据报协议 UDP: 用户数据报协议 特点ÿ…...
![](https://i-blog.csdnimg.cn/img_convert/5c68d2ea14cb574b782f1d69872bbc3a.png)
【数据库】三、SQL语言
文章目录 三、SQL语言1 概述2 数据定义(DDL)2.1 定义数据库2.2 定义基本表2.3 修改基本表2.4 删除基本表 3 数据操作(DML)3.1 数据查询3.1.1 单表查询3.1.2 连接查询3.1.3 嵌套查询3.1.4 集合查询 3.2 数据更新3.2.1 插入数据3.2.2 修改数据3.2.3 删除数据 4 数据控制(DCL)5 视…...
![](https://www.ngui.cc/images/no-images.jpg)
Python对象的序列化和反序列化工具:Joblib与Pickle
在Python中,序列化是将内存中的对象转换为可存储或传输的格式的过程。常见的序列化格式有JSON、YAML、Pickle和Joblib等。其中,Pickle和Joblib是最常用的用于序列化和反序列化Python对象的工具。虽然这两者有很多相似之处,但它们在某些方面有…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
将 ProxySQL 配合 Spring Boot 使用,主要的目的是在 Spring Boot 应用程序中实现对 MySQL 主从同步的读写分离和负载均衡。这样,你可以利用 ProxySQL 自动将写操作路由到主库,而将读操作路由到从库。 1. 准备工作 确保你的 MySQL 主从同步环…...
![](https://img-blog.csdnimg.cn/img_convert/afd69b45eb77d0f51a9fc67a011f5312.jpeg)
量子计算遇上人工智能:突破算力瓶颈的关键?
引言:量子计算遇上人工智能——突破算力瓶颈的关键? 在数字化时代的浪潮中,人工智能(AI)正以前所未有的速度改变着我们的生活,从语音助手到自动驾驶,从医学诊断到金融分析,无不彰显其…...
![](https://i-blog.csdnimg.cn/direct/9f1b2f02ab724c0387dfc67a9f32c711.png)
【Unity插件】解决移动端UI安全区问题 - Safe Area Helper
在移动端设计界面时,必须要考虑的就是UI的安全区。 Unity本身也提供了Safearea的API。 但在asset store时已经有人提供了免费的插件(Safe Area Helper),我们可以直接使用。 插件链接: https://assetstore.unity.com/p…...
![](https://www.ngui.cc/images/no-images.jpg)
JSON.stringify 实现深度克隆的缺陷
在前端开发中,深克隆(Deep Clone)和浅克隆(Shallow Clone)是常见的操作。浅克隆和深克隆的区别主要体现在对象内部嵌套对象的处理方式上。 1. 浅克隆(Shallow Clone) 浅克隆是指创建一个新对象…...
![](https://i-blog.csdnimg.cn/direct/02b6673fa6a04f47861e77be53f77d80.png)
深度解析如何使用Linux中的git操作
1.如何理解版本控制 →Git&&gitee||github 多版本控制面对善变的甲方 版本控制是一种用于管理文件或代码变更的系统,帮助团队或个人追踪项目的历史记录,并支持多方协作开发。它在软件开发和文档管理中尤为重要,但也适用于其他需要追…...
![](https://i-blog.csdnimg.cn/direct/2681db1202d342d79bb28d8ca2468ccf.png)
el-table 合并单元格
参考文章:vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis 三大问题:缓存穿透、缓存击穿、缓存雪崩
Redis 作为高性能的内存数据库,广泛应用于缓存场景。然而,在实际使用中,可能会遇到三大经典问题:缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果不加以解决,可能会导致系统性能下降甚至崩溃。 1. 缓存穿透 问题描述 …...
![](https://www.ngui.cc/images/no-images.jpg)
常用字符串处理函数
常用字符串处理函数 strcspn函数原型参数说明返回值使用示例注意事项 strpbrk函数原型参数说明返回值使用示例 strcasecmp函数原型参数说明返回值使用示例注意事项 strcspn strcspn 是一个 C 和 C 标准库函数,用于计算一个字符串中不包含任何指定字符的最长前缀的长…...
![](https://img-blog.csdnimg.cn/e3d4e738a6ec4809b415037e3e25cd90.jpeg#pic_center)
石景山区城乡建设委员会网站/百度网站是什么
好消息: 近日,拉勾招聘数据研究院对程序员群体开展深度调研后,发布了一份《2022程序员群体职场洞察报告》(以下简称报告),对当下程序员群体职场生存状态、薪资水平和职场选择等方面给出了数据参考。 近8成…...
![](/images/no-images.jpg)
做女装的网站/怎么进行网络推广
[Mnsx_x]刷题笔记——顶端迭代器 请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。 实现 PeekingIterator 类: PeekingIterator(int[] nums) 使用指定整数数组 nums 初始化迭代器。 int next() 返回数组中的下一个元素…...
淡水网站建设哪家便宜/seo教程免费分享
网上胡说八道,众说风云,感觉这篇还算靠谱点。 原文链接:http://blog.csdn.net/dog250/article/details/51809566 为什么大家看到这个以后总是会往MSS,TSO上联系呢?也许第一个解释这个的人是个高手,而且以MS…...
![](/images/no-images.jpg)
景观设计公司排名前十强/百度排名优化咨询电话
目录框架与类库一、重用技术二、框架与类库的主要差别框架与类库 一、重用技术 在区别二者之前,首先需要了解软件开发中的重用(Reuse)技术。 重用技术在软件开发中重要性 IT产业: 减小开发的工作量 缩短软件开发周期࿰…...
![](/images/no-images.jpg)
手机网站是怎么做的/软文大全500篇
If you want something youve never had, you must be willing to do something youve never done. 如果你想拥有从未有过的东西,那么你必须去做你从未做过的事。(Thomas Jefferson) 原文载于:爱词霸英语学习网-每日一句...
![](https://images2015.cnblogs.com/blog/501599/201508/501599-20150830213725609-1545905511.png)
求一个用脚做asmr的网站/厦门seo代理商
Instruments 是应用程序用来动态跟踪和分析 Mac OS X 和 iOS 代码的实用工具。 这是一个灵活而强大的工具,它让你可以跟踪一个或多个进程,并检查收集的数据。 这样,Instruments可以帮你更好的理解应用程序和操作系统的行为。 使用 Instruments 应用,你可以使用特殊的工具(即 in…...