CSS盒子模型详解

ops/2025/2/8 16:29:29/

目录

一、盒子模型的组成部分

二、盒子模型的属性设置

三、盒子模型的用法示例

四、盒子模型的圆角边框

1. 语法:

2. 示例:

(1)统一设置所有角的半径

(2)分别设置每个角的半径

(3)椭圆形边框

(4)圆形边框

3. 注意事项

五、盒子模型的阴影

1. 语法

2. 示例

(1)基本外阴影

(2)内阴影

(3)多重阴影

(4)悬停效果


CSS盒子模型是网页设计和布局的核心概念之一。每个HTML元素都被视为一个矩形盒子,这个盒子由内容(content)、内边距(padding)、边框(border)和外边距(margin)四个主要部分组成。

一、盒子模型的组成部分

  1. 内容(Content):内容是盒子的最核心部分,用来存放元素的实际内容,如文本、图片等。内容的宽度和高度由元素的widthheight属性决定。

  2. 内边距(Padding):内边距位于内容和边框之间,用于增加元素内部的空间。内边距可以通过设置padding属性来调整,它可以是上、右、下、左四个方向的内边距,也可以是统一的内边距。例如padding设置所有内边距,padding-toppadding-bottompadding-leftpadding-right分别设置上下左右的内边距。

  3. 边框(Border):边框是围绕内容和内边距的边界线,用于定义盒子的边界,可以设定颜色、宽度和样式。边框的定义由border属性控制,包括border-style(样式)、border-width(宽度)和border-color(颜色)等子属性。例如:border: 1px solid red; 表示边框宽度为1像素,样式为实线,颜色为红色。

  4. 外边距(Margin):外边距位于边框与周围元素之间,用于增加盒子与周围元素的距离。外边距由margin属性定义,它同样可以是上、右、下、左四个方向的外边距,或者是统一的外边距。例如margin设置所有外边距,margin-topmargin-bottommargin-leftmargin-right分别设置上下左右的外边距。

二、盒子模型的属性设置

  • 尺寸属性:widthheight:设置内容区域的宽度和高度。

 .box {width: 200px;height: 100px;}
  • 内边距属性:padding:设置所有内边距。

 .box {padding: 10px;}
  • 边框属性:border:设置所有边框。

 .box {border: 1px solid #ccc;}
  • 外边距属性:margin:设置所有外边距。

 .box {margin: 20px;}
  • 复合属性:box-sizing:控制盒模型的计算方式。

content-box(默认值):宽度和高度不包括内边距和边框。

border-box:宽度和高度包括内边距和边框。

 .box {box-sizing: border-box;width: 200px;padding: 10px;border: 1px solid #ccc;}

三、盒子模型的用法示例

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>CSS 盒子模型示例</title><style>.box {/*设置内容区域*/width: 200px;height: 100px;/*设置内边距*/padding: 10px;/*设置边框*/border: 1px solid #000000;/*设置外边距*/margin: 20px;/*设置背景颜色*/background-color: #f5f5f5;}</style></head><body><div class="box">这是一个CSS盒子模型示例</div></body></html>

四、盒子模型的圆角边框

圆角边框(Rounded Corners)是一种通过 CSS 属性来创建圆角效果的样式,可以为元素的四个角添加圆角效果,这种效果可以使网页元素(如按钮、卡片、图片等)看起来更加友好和现代。实现圆角边框的关键属性是 border-radiusborder-radius 属性允许指定一个或多个圆角半径,从而创建圆角效果。我们可以分别设置每个角的半径,也可以统一设置所有角的半径。

1. 语法:

 /* 使用一个值:统一设置所有角的半径 */border-radius: value;/* 使用两个值:第一个值应用于左上角和右下角,第二个值应用于右上角和左下角 */border-radius: top-left / bottom-right top-right bottom-left;/* 使用四个值:分别设置每个角的半径(顺时针方向:左上角、右上角、右下角、左下角) */border-radius: top-left top-right bottom-right bottom-left;
  • 长度值:可以是像素(px)、百分比(%)等。

  • 关键字circleellipse(在 border-radius 的扩展属性中使用,如 clip-path)。

2. 示例:

(1)统一设置所有角的半径

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Rounded Corners Example</title><style>.rounded-box {width: 200px;height: 100px;background-color: blue;border: 2px solid #000;border-radius: 20px; /* 统一设置所有角的半径 */}</style></head><body><div class="rounded-box"></div></body></html>

(2)分别设置每个角的半径

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Rounded Corners Example</title><style>.rounded-box {width: 200px;height: 100px;background-color: red;border: 2px solid #000;border-radius: 10px 20px 30px 40px; /* 分别设置每个角的半径 */}</style></head><body><div class="rounded-box"></div></body></html>

(3)椭圆形边框

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>CSS椭圆形边框示例</title><style>div {width: 200px;height: 100px;background-color: yellow;border-radius: 100px / 50px; /*水平半径 / 垂直半径*/}</style></head><body><div></div></body></html>

(4)圆形边框

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>CSS圆形边框示例</title><style>div {width: 100px;height: 100px;background-color: green;border-radius: 50%;}</style></head><body><div></div></body></html>

3. 注意事项

  1. 兼容性border-radius 属性在现代浏览器中都有很好的支持,但在一些非常旧的浏览器中可能不支持。

  2. 性能:虽然 border-radius 对性能的影响很小,但在大量使用复杂圆角时仍需注意。

  3. 布局:圆角边框会影响元素的布局和视觉效果,因此在使用时需要结合整体设计考虑。

五、盒子模型的阴影

CSS 盒子模型的阴影(Box Shadow)是一个非常强大的属性,用于为元素添加阴影效果,可以显著提升网页的视觉效果。box-shadow 属性可以接受多个值来定制阴影的外观,包括阴影的水平偏移、垂直偏移、模糊半径、扩展半径和颜色。

1. 语法

 box-shadow: [horizontal-offset] [vertical-offset] [blur-radius] [spread-radius] [color];
  • horizontal-offset:阴影在水平方向上的偏移量,正值表示向右,负值表示向左。

  • vertical-offset:阴影在垂直方向上的偏移量,正值表示向下,负值表示向上。

  • blur-radius(可选):阴影的模糊半径,值越大,阴影越模糊,默认值为0,表示阴影边缘锐利。

  • spread-radius(可选):阴影的扩展半径,正值会使阴影扩大,负值会使阴影缩小,默认值为0。

  • color(可选):阴影的颜色。,如果不指定,则默认使用黑色。

我们还可以为同一个元素添加多个阴影,只需用逗号分隔每个阴影声明即可。

2. 示例

(1)基本外阴影

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>基本外阴影</title><style>div {width: 200px;height: 200px;background-color: pink;margin: 50px auto;box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.5);}</style></head><body><div></div></body></html>

这个盒子有一个向右下方偏移10px的阴影,阴影有10px的模糊半径,并且颜色为半透明的黑色。

(2)内阴影

虽然 box-shadow 默认是外阴影,但是我们可以通过调整 spread-radius 为负值或者使用 inset 关键字来模拟内阴影效果。

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>基本外阴影</title><style>div {width: 200px;height: 200px;background-color: aquamarine;margin: 50px auto;box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5);}</style></head><body><div></div></body></html>

这里使用 inset 关键字将阴影变为内阴影,阴影均匀分布在盒子内部,有10px的模糊半径。

(3)多重阴影

我们可以为一个元素添加多个阴影:

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>多个阴影</title><style>div {width: 200px;height: 200px;background-color: purple;margin: 50px auto;box-shadow: 10px 10px 10px rgba(255, 0, 0, 0.5), -10px -10px 10px rgba(0, 0, 255, 0.5);}</style></head><body><div></div></body></html>

这个盒子有两个阴影:一个是向右下方偏移的红色阴影,另一个是向左上方偏移的蓝色阴影。

(4)悬停效果

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>悬停效果</title><style>div {width: 200px;height: 200px;background-color: orange;margin: 50px auto;transition: box-shadow 0.3s ease-in-out;}​div:hover {box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);}</style></head><body><div></div></body></html>

当鼠标悬停在盒子上时,阴影会变大,并带有过渡效果。


http://www.ppmy.cn/ops/156761.html

相关文章

【号码分离】从Excel表格、文本、word文档混乱文字中提取分离11位手机号出来,基于WPF的实现方案

应用场景 在市场调研过程中&#xff0c;可能会收集到大量的 Excel 表格、文本报告或 Word 文档&#xff0c;其中包含客户的联系方式。通过提取手机号&#xff0c;可以方便后续的市场推广和客户跟进。 当从不同渠道收集到的数据中包含混乱的文字信息时&#xff0c;需要从中提取…

Hadoop智能房屋推荐系统 爬虫1w+ 协同过滤余弦函数推荐 代码+视频教程+文档

Hadoop智能房屋推荐系统 爬虫1w 协同过滤余弦函数推荐 带视频教程 毕设设计 课题设计 【Hadoop项目】 1. data.csv上传到hadoop集群环境 2. data.csv数据清洗 3.MapReducer数据汇总处理, 将Reducer的结果数据保存到本地Mysql数据库中 4. SpringbootEchartsMySQL 显示数据分析结…

WebApi使用 (.Net Framework版)

1 创建 使用.Net做web后端&#xff0c;推荐使用.Net Core&#xff0c;微软在此基础上做了很多适配&#xff0c;包括内置Swagger&#xff0c;可以直接启动等等。而.Net Framework版&#xff0c;需要手动配置很多内容。 如果需要调用的项目是基于.Net Framework&#xff0c;那么…

康谋方案 | BEV感知技术:多相机数据采集与高精度时间同步方案

随着自动驾驶技术的快速发展&#xff0c;车辆准确感知周围环境的能力变得至关重要。BEV&#xff08;Birds-Eye-View&#xff0c;鸟瞰图&#xff09;感知技术&#xff0c;以其独特的视角和强大的数据处理能力&#xff0c;正成为自动驾驶领域的一大研究热点。 一、BEV感知技术概…

websocket 实现前后端通信

1.spring boot 引入依赖 <dependency><!-- websocket --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.添加配置类 import org.springframework.context.a…

Java 基于微信小程序的高校失物招领平台小程序(附源码,文档)

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…

【Go语言快速上手】第二部分:Go语言进阶

文章目录 并发编程goroutine&#xff1a;创建和调度 goroutinechannel&#xff1a;无缓冲 channel、有缓冲 channel、select 语句无缓冲 channel有缓冲 channelselect 语句 sync 包&#xff1a;Mutex、RWMutex、WaitGroup 等同步原语Mutex&#xff1a;互斥锁RWMutex&#xff1a…

【蓝桥杯—单片机】第十届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线连接频率测量功能的跳线帽 建立模板明确初始状态显示功能部分频率显示界面第一部分第二部分第三部分 电压显示界面第一部分第二部分第三部分 按键功能部分S4&#xff1a;…