发布时间:2026/9/4 18:48:14
14、HTML入门——向web中添加矢量图形 目录1. 什么是矢量图形2. SVG是什么3. 将SVG添加到页面3.1 快捷方式img元素3.2 问题排查和跨浏览器支持3.3 如何在HTML中引入SVG代码3.4 如何使用iframe嵌入SVG参考1. 什么是矢量图形在web上你会和两种类型的图片打交道——位图和矢量图位图使用像素网格来定义——位图文件精确包含每个像素的位置和它的色彩信息。流行的web位图格式包括Bitmap(.bmp)、PNG(.png)、JPEG(.jpg)和GIF(.gif)。矢量图使用算法来定义——矢量图文件包含了图形和路径的定义电脑可以根据这些定义计算出档它们在屏幕上渲染时应该呈现的样子。借助SVG格式我们可以创造用于Web的精彩矢量图形。随着你的放大PNG图片显现出了像素块因为它存储是每个像素的颜色和位置信息。当它放大时每个像素就被放大然后填满屏幕上更多的像素所以图像就会开始变得像马赛克。然而矢量图像看起来仍然效果好且清晰因为无论它的尺寸如何系统都使用算法来计算出图像的形状仅仅是根据放大的倍数来调整算法中的值。此外相较于同样的位图矢量图形体积更小因为它们仅需储存少量的算法而不是逐个储存每个像素的信息。2. SVG是什么SVG是用于描述矢量图像的语言它基于XML。它基本上是像HTML一样的标记只是它提供了许多不同的元素来定义要显示在图像中的形状以及要应用于这些形状的效果。SVG用于标记图形而不是内容。SVG定义了一些用于创建基本图形的元素如circle和rect此外SVG还提供了一些复杂一些的元素如path和polygon。更高级的SVG特性包括feColorMatrix(使用变换矩阵转换颜色)、animate(矢量图形的动画部分)和mask(在图像上层应用蒙版)。svgversion1.1baseProfilefullwidth300height200xmlnshttp://www.w3.org/2000/svgrectwidth100%height100%fillblack/circlecx150cy100r90fillblue//svgSVG很容易手工编码。但是随着图像复杂度提升手动编码很快就开始变得非常困难。SVG除了前面描述的以外还有其他优点矢量图像中的文本仍然可访问有利于搜索引擎优化。SVG可以很好地适应样式/脚本因为图像的每个组件都是可以通过CSS或通过JavaScript设置样式的元素。SVG也有一些缺点SVG非常容易变得复杂这意味着文件大小会增加复杂的SVG也会占用浏览器很长的处理时间。SVG可能比位图更难创建具体取决于你尝试创建哪种图像。由于上述原因像照片那样复杂精密的图像更适合使用位图。3. 将SVG添加到页面3.1 快捷方式img元素要通过img元素嵌入SVG你只需要按照预期的方式在src属性中引用它。你将至少需要height或width属性中的一个或者如果你的SVG没有固定的宽高比则都需要。imgsrcequilateral.svgalt等边三角形height87pxwidth100px/优点快速且熟悉的图像语法内置的文本等小内容可通过alt属性获取。通过将img嵌入到a元素中你可以轻松地将图像转换为超链接。浏览器能够缓存SVG文件这意味在未来使用该图像的页面将加载得更快。缺点无法使用JavaScript操作图像。如果要使用CSS控制SVG内容则必须在SVG代码中包含内联CSS样式(从SVG文件内部调用的外部样式表不起作用)。不能用CSS伪类来重设图像样式(如:focus)。3.2 问题排查和跨浏览器支持对于不支持SVG(IE8以下Android 2.3以下)的浏览器可以用src属性引用PNG或JPG并使用srcset属性来引用SVG。在这种情况下仅支持SVG的浏览器会加载SVG——较旧的浏览器将加载PNG。imgsrcequilateral.pngalt等边三角形srcsetequilateral.svg/你还可以使用SVG作为CSS背景图像。在下面的代码中旧版浏览器会加载它们能够理解的PNG而较新的浏览器将加载SVG。background:url(fallback.png)no-repeat center;background-image:url(image.svg);background-size:contain;与上面的img一样使用CSS背景图片插入SVG意味着SVG无法使用JavaScript进行操作并且同样受到相同的CSS限制。3.3 如何在HTML中引入SVG代码你还可以在文本编辑器中打开SVG文件复制SVG代码并将其粘贴到HTML文档中——这有时称为将SVG内联或内联SVG。请确保你的SVG代码始于svg标签并终于/svg标签。svgwidth300height200rectwidth100%height100%fillgreen//svg优点将SVG内联会减少HTTP请求可以减少加载时间。可以为SVG元素分配class和id并使用CSS修改样式无论是在SVG中还是HTML文档中的CSS样式规则。实际上你可以使用任何SVG外观属性作为CSS属性。内联SVG是唯一可以让你在SVG图像上使用CSS交互和CSS动画的方法。你可以通过将SVG标记包在a元素中使其成为超链接。缺点这种方法只适用于SVG在单个地方使用的情况。多次使用会导致资源密集型维护。额外的SVG代码会增加HTML文件的大小。浏览器不能像缓存普通图像资源那样缓存内联SVG因此包含该图像的页面在加载第一个包含该图像的页面后加载速度不会更快。你可能会在foreignObject元素中包含回退但支持SVG的浏览器仍然会下载所有后备图像。你需要考虑仅仅未支持过时的浏览器而增加额外开销是否真的值的。3.4 如何使用iframe嵌入SVG可以使用iframe嵌入SVG。iframesrctriangle.svgwidth500height500sandboximgsrctriangle.pngaltTriangle with three unequal sides//iframe缺点ems;iframe又一个回退机制如果浏览器不支持iframe则只显示回退。除非SVG和你当前的网页具有相同的来源(协议、主机名、端口三者相同时两个对象才具有相同的源)否则你不能在主页面上使用JavaScript来操作SVG。参考1、向web中添加矢量图形

相关新闻

2026/9/4 18:48:14

【智谱 AI 封装指南】流式对话vs普通对话

一、介绍 1、文档:模型概览 - 智谱AI开放文档 智谱开放平台的开发指南中给出了三种调用方法:HTTP、SDK和第三方框架。三种区别如下: 官方 SDK 优点:开箱即用,自动封装请求 / 响应、流式解析,代码简洁&a…

2026/9/4 18:43:10

开关电源纹波电流公式推导与降纹波系统方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 18:43:10

国产AI工具实战指南:从选型到集成,构建个人高效工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/4 22:49:11

考研数学线代强化:从矩阵方程破解抽象逆矩阵计算

在考研数学线性代数强化阶段,逆矩阵计算并不只是“套初等行变换”那么简单。更多时候,题干不会给出完整的数字矩阵,而是先告诉你A满足某个矩阵方程,例如A^2 - 2A - 3I O,然后要求证明某个矩阵可逆并求逆。此时&#x…

2026/9/4 22:49:11

Deepseek V4 Pro实际接入指南:API调用、本地部署与报错排查

Deepseek V4 Pro 的版本名最近在社区里传得很快,技术群、热搜和各类工具插件讨论里都在提。有人关心它比上一个版本强在哪,有人想知道能不能本地部署,更多人真正卡住的问题是:新版本出来之后,我的项目到底要不要切、怎…

2026/9/4 22:49:11

STM32电子秤开发实战:应变片+HX711信号链全流程解析

简介:本资源是一款基于STM32F10x系列微控制器的高精度简易电子秤完整开发工程,面向嵌入式初学者、课程设计学生及传感器应用开发者,解决应变片信号采集、AD转换、重量标定与实时显示等核心问题,适用于电子称重、实验教学、珠宝或药…

2026/9/4 22:49:11

12864 LCD电子时钟设计:温度与实时时钟融合实战

简介:这是一份面向嵌入式初学者与单片机课程设计者的12864液晶显示多功能电子时钟项目源码包,聚焦温度监测、实时时钟与节日提醒三大核心功能,解决DIY智能时钟开发中LCD驱动、传感器集成与时间逻辑实现等典型问题。压缩包共20个文件&#xff…

2026/9/4 22:49:11

从BIOS到UEFI:现代固件启动范式与EDK2开源实践

1. 从 BIOS 到 UEFI:一次底层启动范式的重构很多人第一次接触 UEFI 这个词,往往不是在什么技术文档里,而是在装系统时弹出来的报错提示:“无法安装 Windows,因为这台电脑的磁盘布局不受 UEFI 支持”。或者是在 BIOS 界…

2026/9/4 22:44:09

从芯片级到系统级:AI硬件合作背后的技术转向

如果你最近在看 AI 硬件方向的新闻,大概会碰到这样的标题:MediaTek 与 Nvidia 深化合作。这轮讨论里,郭明錤的解读把重点落在了一个很多人容易滑过去的词上——AI 业务从芯片设计升级到系统级设计。公开信息目前能确认的更多是方向&#xff0…

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…