什么是盒子模型

news2025/1/24 11:49:42

什么是盒子模型

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

所有 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.coloradmin.cn/o/965684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS学习笔记05

CSS笔记05 定位 position CSS 属性position - 用于指定一个元素在文档中的定位方式。top&#xff0c;right&#xff0c;bottom 和 left 属性则决定了该元素的最终位置。position 有以下常用的属性值&#xff1a; position: static; - 默认值。指定元素使用正常的布局行为&am…

神经网络--感知机

感知机 单层感知机原理 单层感知机:解决二分类问题&#xff0c;激活函数一般使用sign函数,基于误分类点到超平面的距离总和来构造损失函数,由损失函数推导出模型中损失函数对参数 w w w和 b b b的梯度&#xff0c;利用梯度下降法从而进行参数更新。让1代表A类&#xff0c;0代…

es5的实例__proto__(原型链) prototype(原型对象) {constructor:构造函数}

现在看这张图开始变得云里雾里&#xff0c;所以简单回顾一下 prototype 的基本内容&#xff0c;能够基本读懂这张图的脉络。 先介绍一个基本概念&#xff1a; function Person() {}Person.prototype.name KK;let person1 new Person();在上面的例子中&#xff0c; Person …

Nor Flash

核心信息&#xff1a; 工作频率数据吞吐量 bps bit/s&#xff08;传输数据速率&#xff09; Hz&#xff08;时钟频率&#xff09; T/s 56MB/s&#xff08;max&#xff09;448Mb/s&#xff08;数据吞吐量、4路&#xff09;448MHz 112MHz&#xff08;max读、时钟频率&#…

Spring @Configuration 注解解析原理

前言 ​ Configuration 注解是 Spring 3.0 版本引入的新特性&#xff08;目前版本 6.0.11&#xff09;&#xff0c;它用于将一个类标记为配置类&#xff0c;通过配置类可以定义和组装 Spring Bean。 一般来说注解都会有相应的解析器&#xff0c;Configuration 注解靠 C…

Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法

不论搭建什么工程&#xff0c;运行什么文件&#xff0c;只要在Pycharm中出现ImportError: DLL load failed: 找不到指定的模块这样的问题&#xff0c;以下方法都适用&#xff01;&#xff01;&#xff01; 一、问题描述 我在使用pycharm连接webots&#xff0c;用python控制机…

Redis功能实战篇之附近商户

在互联网的app当中&#xff0c;特别是像美团&#xff0c;饿了么等app。经常会看到附件美食或者商家&#xff0c; 当我们点击美食之后&#xff0c;会出现一系列的商家&#xff0c;商家中可以按照多种排序方式&#xff0c;我们此时关注的是距离&#xff0c;这个地方就需要使用到我…

JavaScript -【第一周】

文章来源于网上收集和自己原创&#xff0c;若侵害到您的权利&#xff0c;请您及时联系并删除~~~ JavaScript 介绍 变量、常量、数据类型、运算符等基础概念 能够实现数据类型的转换&#xff0c;结合四则运算体会如何编程。 体会现实世界中的事物与计算机的关系理解什么是数据并…

mybatis源码学习-1-调试环境

写在前面,这里会有很多借鉴的内容,有以下三个原因 本博客只是作为本人学习记录并用以分享,并不是专业的技术型博客笔者是位刚刚开始尝试阅读源码的人,对源码的阅读流程乃至整体架构并不熟悉,观看他人博客可以帮助我快速入门如果只是笔者自己观看,难免会有很多弄不懂乃至理解错误…

【科研论文配图绘制】task7密度图绘制

【科研论文配图绘制】task7密度图绘制 task7 了解密度图的定义&#xff0c;清楚密度图是常用使用常见&#xff0c;掌握密度图绘制。 1.什么是密度图 密度图&#xff08;Density Plot&#xff09;是一种用于可视化数据分布的图表类型。它通过在数据中创建平滑的概率密度曲线…

java反编译工具jd-gui使用

文章目录 一、JD-GUI介绍二、下载三、安装四、使用教程五、免责声明摘抄 一、JD-GUI介绍 JD-GUI是一个独立的图形实用程序&#xff0c;显示“.class”文件的Java源代码。 使用JD-GUI浏览重构的源代码&#xff0c;以便即时访问方法和字段。 二、下载 MAC安装包&#xff1a;ht…

Gorm简单了解

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 04_GORM查询操作_哔哩哔哩_bilibili 前置&#xff1a; db调用操作语句中间加debug&#xff08;&#xff09;可以显示对应的sql语句 1.Gorm模型定义&#xff08;理解重点&#xff…

在R中安装TensorFlow、TensorFlow_Probability、numpy(R与Python系列第二篇)

目录 前言&#xff1a; 1-安装tensorflow库 Step1: 下载R包tensorflow Step2&#xff1a;安装TensorFlow库 Step3&#xff1a;导入R中 2-安装tensorflow_probability库 Step1&#xff1a;下载R包&#xff1a;tfprobability Step2&#xff1a;安装TensorFlow Probability …

链表OJ练习(2)

一、分割链表 题目介绍&#xff1a; 思路&#xff1a;创建两个链表&#xff0c;ghead尾插大于x的节点&#xff0c;lhead尾插小于x的节点。先遍历链表。最后将ghead尾插到lhead后面&#xff0c;将大小链表链接。 我们需要在创建两个链表指针&#xff0c;指向两个链表的头节点&…

【Mysql系列】(一)MySQL语句执行流程

首发博客地址 首发博客地址 系列文章地址 参考文章 MySQL 逻辑架构 连接器 连接命令一般是这么写的 mysql -h$ip -P$port -u$user -p 那么 什么是连接器&#xff1f; MySQL 连接器&#xff08;MySQL Connector&#xff09;是用于连接和与 MySQL 数据库进行交互的驱动程序。它提…

高级IO

五种IO模型 1、阻塞等待&#xff1a;在内核将数据准备好之前&#xff0c;系统调用会一直等待。所有的套接字&#xff0c;默认都是阻塞方式。 2、非阻塞等待&#xff1a;如果内核没有将数据准备好&#xff0c;系统调用仍然会返回&#xff0c;并且会返回EWUOLDBLOCK或者EAGAIN错…

笔试题目回忆

&#xff08;1&#xff09;给出n,k&#xff0c;n表示数组个数&#xff0c;k表示要剔除的个数&#xff0c;接下来n个数为数组元素&#xff0c;求剔除k个数之后&#xff0c;其他所有数互为倍数&#xff0c;每个数最多剔除一次。 未检测代码&#xff0c;超时。 #include <ios…

第 3 章 栈和队列(单链队列)

1. 背景说明 队列(queue)是一种先进先出(first in first out,缩为 FIFO)的线性表。它只允许在表的一端进行插入&#xff0c;而在另一端删除元素。 2. 示例代码 1&#xff09;status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H/* 函数结果…

线上问诊:数仓开发(二)

系列文章目录 线上问诊&#xff1a;业务数据采集 线上问诊&#xff1a;数仓数据同步 线上问诊&#xff1a;数仓开发(一) 线上问诊&#xff1a;数仓开发(二) 文章目录 系列文章目录前言一、DWS1.最近1日汇总表1.交易域医院患者性别年龄段粒度问诊最近1日汇总表2.交易域医院患者…

身份识别与鉴权技术调研方案

对称加密算法 对称加密方式又称为私钥加密方式&#xff0c;该方式的加密和解密过程使用同一个密钥&#xff0c;因此该密钥又称为共享密钥。如图2.2所示&#xff0c;在对称加密方式中&#xff0c;发送方使用对称加密算法和共享密钥处理原始数据&#xff0c;得到一个加密后的密文…