什么是盒子模型

什么是盒子模型

盒子模型,也可以称为框模型。

所有 HTML 元素可以看作盒子。在 CSS 中,“box model” 这一术语是用来设计和布局时使用。

CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边距,边框,填充,和实际内容。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不同部分的说明:

  • Margin(外边距): 清除边框区域。Margin没有背景颜色,它是完全透明。
  • Border(边框): 边框周围的填充和内容。边框是受到盒子的背景颜色影响。
  • Padding(内边距): 清除内容周围的区域。会受到框中填充的背景颜色影响。
  • Content(内容): 盒子的内容,显示文本和图像。

为了在所有浏览器中的元素的宽度和高度设置正确的话,你需要知道的盒模型是如何工作的。

元素的宽度和高度

下面的例子中的元素的总宽度为 300px:

width:250px;
padding:10px;
border:5px solid gray;
margin:10px;

完整的 HTML 代码如下:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title></title>
<style>
	div.ex
	{
		width:220px;
		padding:10px;
		border:5px solid gray;
		margin:0px;
	}
</style>
</head>

<body>

	<div class="ex">The picture above is 250px wide.
					The total width of this element is also 250px.</div>

</body>
</html>

上述示例运行的结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

值得注意的是: 当指定一个 CSS 元素的宽度和高度属性时,只是设置内容区域的宽度和高度。要知道,完全大小的元素,还必须添加填充,边框和边距。

边框

CSS 边框属性允许指定一个元素边框的样式和颜色。

CSS 边框属性常见如下:

  • border-width: 设置边框的宽度
  • border-color: 设置边框的颜色
  • border-style: 边框的样式

设置边框的宽度

如果设置一个值,则同时设置边框的四个方向的宽度。如下代码:

border-width: 10px;

上述代码则表示同时四个方向的边框宽度为 10px。

如果设置两个值,则第一个值表示设置边框的上下方向宽度,第二个值表示设置边框的左右方向宽度。

border-width: 10px 20px;

如果设置三个值,则第一个值表示设置边框的上边宽度,第二个值表示设置边框的左右方向宽度,第三个值表示设置边框的下边宽度。

border-width: 10px 20px 30px;

如果设置四个值,则分别表示设置上、右、下和左四个方向的边框宽度。

border-width: 10px 20px 30px 40px;

除了上述方式设置边框宽度,CSS 还提供如下方式分别设置上、右、下和左边框的宽度。

属性名称描述
border-top-width设置一个元素的顶部边框的宽度。
border-right-width设置一个元素的右边框的宽度。
border-bottom-width设置一个元素的底部边框的宽度。
border-left-width设置一个元素的左边框的宽度。

设置边框的颜色

如果设置一个值,则同时设置边框的四个方向的颜色。如下代码:

border-color: red;

上述代码则表示同时四个方向的边框颜色为 red。

如果设置两个值,则第一个值表示设置边框的上下方向颜色,第二个值表示设置边框的左右方向颜色。

border-color: red orange;

如果设置三个值,则第一个值表示设置边框的上边颜色,第二个值表示设置边框的左右方向颜色,第三个值表示设置边框的下边颜色。

border-color: red orange yellow;

如果设置四个值,则分别表示设置上、右、下和左四个方向的边框颜色。

border-color: red orange yellow blue;

除了上述方式设置边框颜色,CSS 还提供如下方式分别设置上、右、下和左边框的颜色。

属性名称描述
border-top-color设置一个元素的顶部边框的颜色。
border-right-color设置一个元素的右边框的颜色。
border-bottom-color设置一个元素的底部边框的颜色。
border-left-color设置一个元素的左边框的颜色。

设置边框的样式

边框样式的常用备选想如下:

边框样式描述
none定义无边框。
hidden与 “none” 相同。不过应用于表时除外,对于表,hidden 用于解决边框冲突。
dotted定义点状边框。在大多数浏览器中呈现为实线。
dashed定义虚线。在大多数浏览器中呈现为实线。
solid定义实线。
double定义双线。双线的宽度等于 border-width 的值。
inherit规定应该从父元素继承边框样式。

如果设置一个值,则同时设置边框的四个方向的样式。如下代码:

border-style: dotted;

如果设置两个值,则第一个值表示设置边框的上下方向样式,第二个值表示设置边框的左右方向样式。

border-style: dotted solid;

如果设置三个值,则第一个值表示设置边框的上边样式,第二个值表示设置边框的左右方向样式,第三个值表示设置边框的下边样式。

border-style: dotted solid dashed;

如果设置四个值,则分别表示设置上、右、下和左四个方向的边框样式。

border-style: dotted solid dashed double;

除了上述方式设置边框样式,CSS 还提供如下方式分别设置上、右、下和左边框的样式。

属性名称描述
border-top-style设置一个元素的顶部边框的样式。
border-right-style设置一个元素的右边框的样式。
border-bottom-style设置一个元素的底部边框的样式。
border-left-style设置一个元素的左边框的样式。

简写设置边框

CSS 提供了 border 属性允许同时设置边框的宽度、颜色和样式。

border: 5px solid red;

值得注意的是: 设置的顺序没有明确要求。

除了上述方式设置边框,CSS 还提供如下方式分别设置上、右、下和左边框。

属性名称描述
border-top设置一个元素的顶部边框。
border-right设置一个元素的右边框。
border-bottom设置一个元素的底部边框。
border-left设置一个元素的左边框。

内边距

CSS Padding(内边距)属性定义元素边框与元素内容之间的距离。

如果设置一个值,则同时设置内边距的四个方向。如下代码:

padding: 25px;

如果设置两个值,则第一个值表示设置内边距的上下方向,第二个值表示设置内边距的左右方向。

padding: 25px 50px;

如果设置三个值,则第一个值表示设置内边距的上边,第二个值表示设置内边距的左右方向,第三个值表示设置内边距的下边。

padding: 25px 50px 75px;

如果设置四个值,则分别表示设置上、右、下和左四个方向的内边距。

padding: 25px 50px 75px 100px;

除了上述方式设置内边距,CSS 还提供如下方式分别设置上、右、下和左边的内边距。

属性名称描述
padding-top设置一个元素的顶部内边距。
padding-right设置一个元素的右边内边距。
padding-bottom设置一个元素的底部内边距。
padding-left设置一个元素的左边内边距。

外边距

CSS Margin(外边距)属性定义元素周围的距离。

外边距不会影响元素的可见大小,但是会影响元素的位置。

属性名称描述
margin-top设置元素的上外边距。
margin-right设置元素的右外边距。
margin-left设置元素的左外边距。
margin-bottom设置元素的下外边距。

设置上和左外边距

margin-top: 100px;
margin-left: 50px;

由于元素在 HTML 页面中默认是靠左靠上显示的。所以默认情况下,修改左外边距和上外边距时,会影响当前元素的位置。

设置下和右外边距

margin-bottom: 100px;
margin-right: 50px;

修改右和下外边距时会影响其他元素相对于当前元素的位置。

简写设置外边距

如果设置一个值,则同时设置外边距的四个方向。如下代码:

margin: 25px;

如果设置两个值,则第一个值表示设置外边距的上下方向,第二个值表示设置外边距的左右方向。

margin: 25px 50px;

如果设置三个值,则第一个值表示设置外边距的上边,第二个值表示设置外边距的左右方向,第三个值表示设置外边距的下边。

margin: 25px 50px 75px;

如果设置四个值,则分别表示设置上、右、下和左四个方向的外边距。

margin: 25px 50px 75px 100px;

外边距重叠

当同时为两个相邻的 <div> 标签设置外边距,为第一个 <div> 标签设置下外边距,为第二个 <div> 标签设置上外边距。具体代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			.box1{
				width: 100px;
				height: 100px;
				background-color: red;
				/*为上边的元素设置一个下外边距*/
				margin-bottom: 100px;
			}		
			.box2{
				width: 100px;
				height: 100px;
				background-color: blue;
				/*为下边的元素设置一个上外边距*/
				margin-top: 100px;
			}
		</style>
	</head>
	<body>
		<div class="box1"></div>
		<div class="box2"></div>	
	</body>
</html>

上述示例代码,最终运行的结果是: 两个 <div> 之间的距离为 100px。

垂直方向的相邻的外边距会发生外边距的重叠现象,兄弟元素的相邻外边距会取最大值。

值得注意的是: 外边距的重叠现象只会出现在垂直方向,而水平方向并不存在外边距重叠现象。

如果定义两个 <div> 标签是父子关系的话,当为作为子元素的 <div> 设置上外边距,该上外边距会传递给作为父元素的 <div>。具体代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>		
		<style type="text/css">		
			.box3{
				width: 300px;
				height: 200px;
				background-color: skyblue;
			}
			
			.box4{
				width: 100px;
				height: 100px;
				background-color: red;
				/*设置一个margin-top*/
				margin-top: 100px;
			}			
		</style>
	</head>
	<body>		
		<div class="box3">
			<div class="box4"></div>
		</div>
	</body>
</html>

上述外边距的重叠现象,可以通过为作为父元素的 <div> 下内边距解决。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>		
		<style type="text/css">		
			.box3{
				width: 300px;
				height: 100px;
				background-color: skyblue;
				padding-top: 100px;
			}
			
			.box4{
				width: 100px;
				height: 100px;
				background-color: red;
			}			
		</style>
	</head>
	<body>		
		<div class="box3">
			<div class="box4"></div>
		</div>
	</body>
</html>

内联元素的盒子模型

内联元素的宽度和高度

内联元素不支持设置宽和高,内联元素元素的大小由内容决定。

内联元素的内边距

  • 内联元素支持水平方向的内边距。
  • 内联元素可以设置垂直方向的内边距,但是不会影响布局。

内联元素的边框

  • 内联元素支持水平方向的边框。
  • 内联元素可以设置垂直方向的边框,但是不会影响布局。

内联元素的外边距

内联元素支持水平方向的外边距 , 不支持垂直方向的外边距。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/102978.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Lnmp架构-Redis

网站&#xff1a;www.redis.cn redis 部署 make的时候需要gcc和make 如果在纯净的环境下需要执行此命令 [rootserver3 redis-6.2.4]# yum install make gcc -y 注释一下这几行 vim /etc/redis/6739.conf 2.Redis主从复制 设置 11 是master 12 13 是slave 在12 上 其他节…

C. Queries for the Array - 思维

分析&#xff1a; 分析出现矛盾的地方&#xff0c;也就是可能遇到0&#xff0c;并且已有字符串的长度小于等于1&#xff0c;另一种情况就是&#xff0c;遇到了1并且已有字符串不是排好序的&#xff0c;或者遇到了0已有字符串是排好序的&#xff0c;那么可以遍历字符串&#xff…

数据艺术:精通数据可视化的关键步骤

数据可视化是将复杂数据转化为易于理解的图表和图形的过程&#xff0c;帮助我们发现趋势、关联和模式。同时数据可视化也是数字孪生的基础&#xff0c;本文小编带大家用最简单的话语为大家讲解怎么制作一个数据可视化大屏&#xff0c;接下来跟随小编的思路走起来~ 1.数据收集和…

Ubuntu18.04版本下配置ORB-SLAM3和数据集测试方法

文章目录 环境说明必要配置一、Pangolin源码和库文件下载依赖安装和编译安装 二、Eigen3源码和库文件下载编译安装 三、Opencv源码和库文件下载编译安装 四、DBoW2 和 g2o五、boost源码和库文件下载编译安装 六、libssl-dev七、ORB-SLAM3源码和库文件下载编译安装 数据集测试参…

使用Python对数据的操作转换

1、列表加值转字典 在Python中&#xff0c;将列表的值转换为字典的键可以使用以下代码&#xff1a; myList ["name", "age", "location"] myDict {k: None for k in myList} print(myDict) 输出&#xff1a; {name: None, age: None, loca…

大数据组件-Flume集群环境的启动与验证

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

4.(Python数模)0-1规划

Python解决0-1规划问题 参考下面文章 源代码 import pulp # 导入 pulp 库# 主程序 def main():# 投资决策问题&#xff1a;# 公司现有 5个拟投资项目&#xff0c;根据投资额、投资收益和限制条件&#xff0c;问如何决策使收益最大。"""问题建模&#x…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…

c#继承(new base)的使用

概述 C#中的继承是面向对象编程的重要概念之一&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;从另一个类&#xff08;称为父类或基类&#xff09;继承属性和行为。 继承的主要目的是实现代码重用和层次化的组织。子类可以继承父类的字段、属性、方法和事…

专业的视觉特效处理包,FxFactory 8 Pro for Mac助您打造精彩视频

FxFactory 8 Pro for Mac是一款强大的视觉特效处理包&#xff0c;专门为Mac用户设计。它集成了超过200种高质量的视觉效果和过渡效果&#xff0c;可以轻松地应用于各种视频项目中。该软件提供了一个直观的界面&#xff0c;用户可以通过简单拖放操作将特效应用到视频片段上。它支…

MySQL索引,事务和存储引擎

一、索引 1、索引的概念 ●索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;。 ●使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先…

SpringCloudAlibaba Gateway(一)简单集成

SpringCloudAlibaba Gateway(一)简单集成 随着服务模块的增加&#xff0c;一定会产生多个接口地址&#xff0c;那么客户端调用多个接口只能使用多个地址&#xff0c;维护多个地址是很不方便的&#xff0c;这个时候就需要统一服务地址。同时也可以进行统一认证鉴权的需求。那么服…

75 # koa 基本逻辑实现以及属性的扩展

准备工作 新建自己的 kaimo-koa 文件夹&#xff0c;结构如下&#xff1a; lib application.js&#xff1a;创建应用context.js&#xff1a;上下文request.js&#xff1a;koa 中自己实现的 request 的对象response.js&#xff1a;koa 中自己实现的 response 的对象 package.js…

soundtouch库的编译与使用

源码下载 https://gitlab.com/soundtouch/soundtouch/-/archive/2.1.2/soundtouch-2.1.2.tar.bz2 SDK配置 使用vs逐个打开source下指定的三个项目文件&#xff0c;修改SDK&#xff0c;因为可能库中使用的是8.0&#xff0c;你使用的10.0 编译准备 在编译soundtouch动态库时要…

泊松回归和地理加权泊松回归

01 泊松回归 泊松回归(Poisson Regression)是一种广义线性模型,用于建立离散型响应变量(计数数据)与一个或多个预测变量之间的关系。它以法国数学家西蒙丹尼泊松(Simon Denis Poisson)的名字命名,适用于计算“事件发生次数”的概率,比如交通事故发生次数、产品缺陷数…

图文详解PhPStudy安装教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 官方下载 请在PhPStudy官方网站下载安装文件&#xff0c;官方链接如下&#xff1a;https://m.xp.cn/linux.html&#xff1b;图示如下&#xff1a; 请下载PhPStudy安装文件…

MongoDB 会丢数据吗? 在次补刀MongoDB 双机热备

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis &#xff0c;Oracle ,Oceanbase 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请加微信号 liuaustin3 &#xff08;…

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 目录 Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 一、简单介绍 二、汉化操作 附录&#xff1a; 一、Install from URL 中出现 Failed to connect to 127.0.0.1 port 7890: Connection refused 错误&#xf…

【半监督医学图像分割】2022-MedIA-UWI

【半监督医学图像分割】2022-MedIA-UWI 论文题目&#xff1a;Semi-supervise d me dical image segmentation via a triple d-uncertainty guided mean teacher model with contrastive learning 中文题目&#xff1a;基于对比学习的三维不确定性指导平均教师模型的半监督图像分…

【vue】this.$nextTick解决this.$refs undefined的问题

说明 1、发邮件页面分成两个部分&#xff1a;模态框页面&#xff08;头部和底部&#xff09;和form页面&#xff08;操作按钮&#xff09; 2、点击回复按钮&#xff0c;要将发件人信息带到模态框页面&#xff0c;给定默认值且禁止收件人下拉选择&#xff08;多个邮箱&#xff…