news 2026/9/3 3:29:28

css核心技术第三篇(笔记)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
css核心技术第三篇(笔记)

盒子模型基础概念

所有 HTML 元素都被 “盒子” 包裹,是网页精准布局、处理元素排列的核心;主要分为 ** 区块盒子(block)行内盒子(inline)** 两类,且盒模型整体适用于区块盒子。

盒子类型及特点

类型核心特点常见元素
区块盒子(block)1. 会自动换行2.width/height属性生效3. 不设宽度默认占父元素 100%4. 内边距、外边距、边框会撑大元素divphultable
行内盒子(inline)1. 不会换行(同行显示)2.width/height属性不生效3. 垂直方向内边距、外边距不生效,仅水平方向有效spanemastrong

盒子模型的组成(共 4 部分)

CSS 盒模型包含以下 4 层(从内到外):

  1. 盒子内容:显示内容的区域,大小由内容或width/height决定;
  2. 内边距(padding):内容与边框之间的距离;
  3. 边框(border):包裹内容和内边距的线条;
  4. 外边距(margin):盒子与其他元素之间的距离。

边框(border)的属性用法

1. 边框缩写属性
  • 语法:border: 边框粗细 边框样式 边框颜色;(三部分用空格分隔,顺序可调整,边框样式必填
  • 示例:border: 1px solid #f1f1f1;(1 像素、实线、浅灰色边框)
  • 常用边框样式:
    • dotted:点状边框(圆点虚线)
    • dashed:虚线边框(短横线虚线)
    • solid:实线边框(单一线条)
2. 单方向边框(按方位设置)
  • 语法:border-方位: 粗细 样式 颜色;(方位可选top/bottom/left/right
  • 示例:border-bottom: 1px solid pink;(仅底部加边框)
  • 适用场景:
    1. 四个边框样式 / 颜色不同;
    2. 单独加某一边框(如底部加线做分割线)。

圆角基本作用

border-radius用于设置元素外边框的圆角效果,是盒子模型中美化元素的常用属性。

使用场景
  1. 普通场景:
    • 给盒子添加圆角,提升视觉美观度;
    • 将正方形盒子 / 图片设置为正圆形。
  2. 特殊场景:
    • 胶囊圆角(长方形元素的圆角效果);
    • 部分角带圆角(如淘宝侧边栏仅左上角、右下角有圆角,其余角无)。

属性用法

1. 基础语法

css

border-radius: 属性值; /* 属性值支持数字(如px)、百分比 */
2. 多参数写法(顺时针顺序:左上 → 右上 → 右下 → 左下

不同参数数量对应不同角的圆角分配:

写法示例作用效果
border-radius: 10px;四个角圆角均为 10px
border-radius: 10px 20px;左上 / 右下 10px,右上 / 左下 20px
border-radius: 10px 20px 30px;左上 10px,右上 / 左下 20px,右下 30px
border-radius: 10px 20px 30px 40px;左上 10px、右上 20px、右下 30px、左下 40px
3. 特殊场景实现
  • 胶囊圆角:长方形元素设border-radius: 高度的一半;(例:高度 40px 的元素,设20px);
  • 圆形:正方形元素设border-radius: 50%;border-radius: 高度的一半;
  • 部分角圆角:不需要圆角的角设为0(例:仅左上、右下圆角:border-radius: 12px 0 0 12px;)。

圆角原理

border-radius的值对应 “圆角的半径”,因此正方形元素设border-radius: 50%;时,会形成正圆形(半径为元素宽 / 高的一半)。

内边距基本定义

内边距(padding)是元素边框与内容区域之间的距离,属于盒子模型的核心组成部分。

使用场景

让盒子的内容与边框之间保留一定空白间距,避免内容紧贴边框,提升页面布局的美观度。

写法规则

1. 多值缩写(顺时针顺序:上 → 右 → 下 → 左

通过不同数量的参数,批量设置多个方向的内边距:

写法示例作用效果
padding: 10px;上下左右 4 个方向的内边距均为 10px
padding: 10px 20px;上下内边距 10px,左右内边距 20px
padding: 10px 20px 30px;上内边距 10px,左右内边距 20px,下内边距 30px
padding: 10px 20px 30px 40px;上 10px、右 20px、下 30px、左 40px(严格顺时针)
2. 单边设置(单独控制某一方向)

通过 “方位名词 + padding” 的属性,单独设置某一个方向的内边距:

css

padding-top: 10px; /* 仅上内边距 */ padding-right: 10px; /* 仅右内边距 */ padding-bottom: 10px; /* 仅下内边距 */ padding-left: 10px; /* 仅左内边距 */

外边距基本定义与使用场景

  • 定义:外边距(margin)是盒子周围的空白空间,作用是将其他元素 “推开”,属于盒子模型的外层部分。
  • 场景:让元素之间保留一定间距,提升布局美观度。

写法规则

1. 多值缩写(顺时针顺序:上 → 右 → 下 → 左

通过不同数量的参数,批量设置多个方向的外边距:

写法示例作用效果
margin: 10px;上下左右 4 个方向外边距均为 10px
margin: 10px 20px;上下外边距 10px,左右外边距 20px
margin: 10px 20px 30px;上 10px、左右 20px、下 30px
margin: 10px 20px 30px 40px;上 10px、右 20px、下 30px、左 40px
2. 单边设置(单独控制某一方向)

通过 “方位名词 + margin” 的属性,单独设置单方向外边距:

css

margin-top: 10px; /* 仅上外边距 */ margin-right: 10px; /* 仅右外边距 */ margin-bottom: 10px; /* 仅下外边距 */ margin-left: 10px; /* 仅左外边距 */

注意事项(行内元素限制)

行内元素(如spana)的margin存在以下限制:

  • 左右外边距生效;
  • 上下外边距无效;
  • 同时,行内元素设置width/height也无效。

实用技巧:区块元素水平居中

有宽度的区块元素设置margin: auto;(或margin-left: auto; margin-right: auto;),可实现水平居中(网页布局常用技巧,如小米、京东的容器居中):

css

.container { width: 1200px; /* 必须设置宽度 */ margin: auto; /* 水平居中 */ }

特殊问题 1:外边距折叠(兄弟元素)

情况:

并列(兄弟关系)的区块元素,上下外边距会发生合并(折叠)

表现:

两个元素的上下外边距会合并为 “其中较大的那个值”(例:A 盒margin-bottom:100px,B 盒margin-top:50px,最终间距为 100px)。

解决:

只需给其中一个元素设置上下外边距即可(避免同时给兄弟元素设置上下 margin)。

六、特殊问题 2:外边距塌陷(父子元素)

情况:

嵌套(父子关系)的区块元素,给子元素设置上下外边距时,会带动父元素一起移动(而非子元素在父元素内产生间距)。

解决方案(三选一):
  1. 给父元素添加上边框(如border-top: 1px solid transparent;);
  2. 给父元素添加上内边距(如padding-top: 1px;);
  3. 给父元素添加overflow: hidden;属性。

盒子模型 - 尺寸计算默认尺寸计算的问题

在 CSS 盒子模型的默认规则中:

  • 元素的width/height仅表示内容区域的大小;
  • padding(内边距)和border(边框)会额外 “撑大” 盒子的实际尺寸。

例:设置width:200px+border:5px+padding:10px,盒子实际宽度为:200 + 5×2 + 10×2 = 230px,这种计算方式会增加布局的复杂度。

box-sizing属性(控制尺寸计算方式)

box-sizing用于定义盒子的尺寸计算规则,解决 “padding/border 撑大盒子” 的问题,核心是控制width/height是否包含paddingborder

语法:

css

box-sizing: 属性值;
两个核心属性值:
属性值描述(width/height的包含范围)
content-box默认值。仅包含内容区域,不包含paddingborder(即默认撑大盒子的规则)。
border-box包含内容区域 + padding + border。设置width:200px后,即使加了 padding 和 border,盒子实际尺寸仍为 200px(padding 和 border 会从内容区域的空间里 “扣除”)。

实际开发建议

为了简化布局计算,推荐全局设置border-box,写法示例:

css

/* 让页面所有元素(包括伪元素)都使用border-box计算尺寸 */ body *, body *::before, body *::after { box-sizing: border-box; }

盒子背景background 属性的基本定义

background是 CSS 中用于设置元素背景相关属性的综合属性,可控制背景颜色、背景图片、背景位置、背景重复方式等样式。

使用场景
  1. 给盒子添加精美背景图片,提升视觉效果;
  2. 给列表添加小图标作为装饰元素;
  3. 给页面添加大幅背景图,增强页面氛围感;
  4. 纯 CSS 实现背景渐变效果。

核心子属性详情

属性名作用常用值示例代码
background-color设置元素背景颜色颜色名称、十六进制、RGB、透明度background-color: #0f0f0f;
background-image设置背景图片url(图片路径)background-image: url(bg.png);
background-repeat控制背景图是否重复repeat(默认)、no-repeatrepeat-xrepeat-ybackground-repeat: no-repeat;
background-position定位背景图的位置x y(如center top)、px 单位、% 单位background-position: center;
background-size调整背景图的尺寸auto(默认)、cover(覆盖容器)、contain(完整包含)、px/%background-size: cover;
background-attachment设置背景是否随页面滚动scroll(默认,随页面滚动)、fixed(固定不滚动)background-attachment: fixed;

背景渐变基本定义

在 CSS 中,可通过linear-gradient(线性渐变)和radial-gradient(径向渐变)两种方法,为元素添加渐变背景效果。

使用场景
  1. 给文字添加渐变底色,让文字更生动吸睛;
  2. 给盒子添加渐变背景,提升视觉美观度。

两种渐变类型详情

方法 / 属性描述核心参数说明示例代码
linear-gradient()线性渐变(方向可控)1. 方向:支持方位名词(如to right)或角度(如90deg)2. 色标:可指定颜色及渐变位置(可选)```css
background: linear-gradient(to right, #ff6b6b, #4ecdc4);
/* 或带角度 + 色标位置 */
background-image: linear-gradient(90deg, #ff6b6b 30%, #4ecdc4 70%);

|

| `radial-gradient()` | 径向渐变(形状、位置可控)| 1. 形状:如`circle`(圆形)<br>2. 色标:指定渐变颜色 | ```css radial-gradient(circle, #ff9a9e, #fad0c4); ``` |

盒子阴影(box-shadow)

基本定义

CSS 的box-shadow属性用于给元素框架添加阴影效果。

使用场景
  1. 给盒子加阴影,增强立体效果;
  2. 鼠标 hover 元素时显示阴影,突出目标元素。
语法与参数

css

box-shadow: X轴偏移量 Y轴偏移量 模糊半径 扩散半径 颜色 [inset];
  • 核心要点:
    1. X/Y 轴偏移量是必填项,其余参数可选(取默认值);
    2. 默认是外阴影,加inset可改为内阴影;
  • 示例:

    css

    nav li { box-shadow: 0 15px 30px rgba(0,0,0,.1); }

过渡(transition)

基本定义

过渡效果(Transition)用于让元素的属性值变化时平滑过渡(而非瞬间切换)。

使用场景
  1. 鼠标 hover 图片时,图片平滑放大;
  2. 表单获得焦点时,输入框样式平滑变化。
语法

css

transition: 过渡属性 过渡时间;
  • 核心要点:
    1. 过渡属性:若所有属性都要过渡,可写all
    2. 过渡时间:单位为秒(s),如0.3s
  • 示例:

    css

    input:hover { transition: all 0.3s; }

样式初始化

核心原因

不同浏览器对 HTML 元素的默认样式(如marginpaddingfont-size)存在差异,会导致跨浏览器兼容性问题。

初始化目的
  1. 统一浏览器默认样式,消除差异;
  2. 减少后续开发的冗余代码;
  3. 提高代码可维护性。
最佳实践
  • 小型项目(新手):简单重置

    css

    /* 清除所有元素的默认margin、padding,统一盒模型 */ * { margin: 0; padding: 0; box-sizing: border-box; } /* 重置列表默认样式(去掉黑点/数字) */ ul, ol { list-style: none; } /* 重置链接默认样式(去掉下划线) */ a { text-decoration: none; }
  • 中大型项目:推荐 Normalize.css

    1. 引入方式:在 HTML 中添加链接标签引入文件;

      html

      预览

      <link rel="stylesheet" href="./css/Normalize.css">
    2. 下载地址:https://necolas.github.io/normalize.css/(Vue 官网等项目也常用此方案)。

字体图标(Icon Font)

1. 基本定义

是一种将图标以字体形式嵌入网页的技术,可像文字一样通过 CSS 控制图标的颜色、大小、阴影等样式。

2. 使用场景
  1. 导航菜单的功能图标;
  2. 按钮的操作类图标(如 “搜索”“收藏”);
  3. 结合动画实现动态图标效果。
3. 核心优势
  1. 矢量缩放:无损放大 / 缩小,不会模糊;
  2. 样式灵活:通过 CSS 直接修改颜色、大小、阴影等属性;
  3. 减少请求:一个字体文件包含多个图标,比多张小图片更高效;
  4. 兼容性强:支持所有现代浏览器,部分旧浏览器也适配。
4. 常用图标库
图标库名特点官网链接
Font Awesome图标最全,支持免费版和 Pro 付费版fontawesome.com
Bootstrap IconsBootstrap 生态图标,简单易用icons.getbootstrap.com
IcoMoon最早的自定义图标字体生成器icomoon.io
iconfont阿里字体库,含淘宝 / 阿里妈妈图标(免费)http://www.iconfont.cn/
5. 使用步骤(以 iconfont 为例)
  1. 下载:从图标库 / 设计师处获取字体图标文件,保存到项目目录;
  2. 引入:在 HTML 中通过<link>引入对应的 CSS 文件;
  3. 使用:通过标签调用对应图标,再用 CSS 调整样式(颜色、大小等)。

精灵图(CSS Sprite)

1. 基本定义

CSS Sprites 是将多个小图标 / 图像合并到一张大图,通过调整background-position属性,显示图片中特定区域的技术。

2. 使用场景
  1. 导航菜单的功能图标;
  2. 按钮的操作类图标;
  3. 复杂彩色小图标(更适合精灵图)。
3. 核心优势
  1. 减少 HTTP 请求:多图标合并为一张图,仅需一次请求;
  2. 提升性能:减少网络开销,避免移动 / 低带宽场景的加载问题;
  3. 统一管理:便于维护图标集,避免文件分散。
4. 实现原理
  1. 给目标盒子添加合并后的大图作为背景图;
  2. 通过background-position属性(调整坐标),定位到需要显示的图标区域;
  3. 注意网页坐标的规则(与常规坐标有差异)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:27:17

深度学习计算机毕设之基于卷神经网络的纸箱是否有破损识别基于python深度学习的纸箱是否有破损识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 23:31:20

CAD倒圆角——CAD自带倒圆角 VS c#重写的倒圆角

经测试CAD2024中闭合多段线倒圆角&#xff08;半径1&#xff09;&#xff0c;效果如下&#xff1a;对比发现&#xff0c;这种情况CAD自身命令F P 选择多段线生成的倒圆角出现了bug&#xff0c; 通过重写倒圆角算法避免了此种bug出现。

作者头像 李华
网站建设 2026/8/31 1:47:02

RS485 双串口通信 + LCD 实时显示(DMA版)

目录 一、前言二、DMA 通信核心原理简述三、CubeMX 的 DMA 串口配置四、FreeRTOS DMA 收发任务代码开发五、总结六、结尾 一、前言 前文我们已经完成了串口 RS485 通信的查询方式与中断方式开发&#xff0c;两种方式各有适配场景。本次笔记将在此基础上&#xff0c;讲解串口…

作者头像 李华
网站建设 2026/9/2 19:52:48

aa---(9)

41.PetsThe cat.The dog.The bunny.The bird.The goldfish.The mouse.The turtle.The hamster(仓鼠).42.Picking ApplesFocus QuestionWhat can you see when picking apples from trees?apples friends basket ladder farmer tractor(拖拉机)textThe farmer.The tractorThe t…

作者头像 李华
网站建设 2026/9/2 17:47:09

下一代CMO的核心课题:通过GEO优化,管理AI口中的“品牌第二身份”

生成式AI的普及正在引发一场静默但深刻的变革&#xff1a;搜索引擎的“答案页”正被AI助手的“对话流”所取代。当用户习惯于向ChatGPT、Copilot等工具直接提问并获取整合答案时&#xff0c;传统的“关键词排名-链接点击”营销逻辑便出现了根本性断裂。在这一断裂处兴起的新领域…

作者头像 李华