SVG 在前端的7种使用方法,你还知道哪几种?

news2024/11/22 21:59:50

本文简介

点赞 + 关注 + 收藏 = 学会了


技术一直在演变,在网页中使用 SVG 的方法也层出不穷。每个时期都有对应的最优解。

所以我打算把我知道的 7种 SVG 的使用方法列举出来,有备无患~

如果你还知道其他方法,可以在评论区补充~



1. 在浏览器直接打开

file

<?xml version="1.0" ?>

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <title>雷猴</title>
  <circle cx="50" cy="50" r="50" fill="hotpink"></circle>
</svg>

xml 是浏览器能读取的格式,但如果希望 svg 能在浏览器中渲染出来,需要使用 xmlns 声明渲染规则。

所以必须使用 xmlns="http://www.w3.org/2000/svg"



2. 内嵌到 HTML 中(推荐⭐⭐⭐)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>svg demo</title>
</head>
<body>
  <div>
    <!-- 内嵌到 HTML 中 -->
    <svg width="100%" height="100%" version="1.1">
      <circle cx="50" cy="50" r="50" fill="hotpink"></circle>
    </svg>
  </div>
</body>
</html>

可以看到上面的代码中,<svg> 标签并没有使用 xmlns="http://www.w3.org/2000/svg" 声明命名空间,这是因为 HTML 5 文档使用 <!DOCTYPE html> 标记,它允许跳过 SVG 命名空间声明,HTML 解析器会自动识别 SVG 元素和它的子元素,除了 <foreignObject> 元素的子元素。


在写本文时,SVG 内嵌到 HTML 的做法是最常见的,也是比较推荐的方式之一。

做特效时,这种使用方式也是比较轻松的。



3. CSS 背景图(推荐⭐)

<style>
.svg_bg_img {
  width: 100px;
  height: 100px;
  background: url('./case1.svg') no-repeat;
  background-size: 100px 100px;
}
</style>

<div class="svg_bg_img"></div>

SVG 也是一种图片格式,所以按理说是能当做背景图来使用的。

一试,果然可以~



4. 使用 img 标签引入(推荐⭐)

<img src="./case1.svg" width="100" height="100">

既然 SVG 可以在 CSS 中当背景图使用,那也可以在 <img> 标签里使用咯~



5. 使用 iframe 标签引入(不推荐❌)

file

<iframe
  src="./case1.svg"
  width="100"
  height="100"
></iframe>

iframe 可以在网页里再嵌套一个网页,既然 SVG 可以直接在浏览器打开,那使用 <iframe> 引用 SVG 同样也是可以的。

需要注意的是,<iframe> 默认是有个边框样式的,如果你使用这种方式引入 SVG 可能还需要自己手动调节一下样式。



6. 使用 embed 标签引入(不推荐❌)

<embed
  src="./case1.svg"
  width="100"
  height="100"
/>

<embed> 标签定义了一个容器,用来嵌入外部应用或者互动程序。它也可以插入各种媒体资源。

<embed> 标签已经被标准采用了。但它不能包含任何子内容,因此如果嵌入失败就没有备用选项了。所以现阶段来看,我不太推荐使用 embed 的方式引入 SVG



7. 使用 object 标签引入(不推荐❌)

<object
  data="./case1.svg"
  type="image/svg+xml"
  codebase="http://www.adobe.com/svg/viewer/install"
></object>

<object> 是通过 data 属性引入资源的。它可以用于嵌入图像,类似 <img> ,也可以用于嵌入独立的 HTML 文档,类似 <iframe>

使用 <object> 嵌入 SVG 可以让那些不能直接显示 SVG 但又有 SVG 插件的老旧浏览器展示 SVG

需要注意的是,在某些现代浏览器中,typecodebase 是可以不写的。

type 用来声明当前引入的资源是属于什么类型。



总结

在写本时,我推荐使用 内嵌到 HTML 的方式来做日常开发。

其他方式按照你实际需求去使用即可。

最后的 embedobject 这两种方式可以当做备用方案去使用。



代码仓库

⭐雷猴 SVG



推荐阅读

👍《Canvas 从入门到劝朋友放弃(图解版)》

👍《Fabric.js 从入门到膨胀》

👍《『Three.js』起飞!》

👍《console.log也能插图!!!》

👍《纯css实现117个Loading效果》

👍《视差特效的原理和实现方法》

👍《这18个网站能让你的页面背景炫酷起来》 代码仓库

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

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

相关文章

PMO(项目管理办公室)的未来趋势

PMO&#xff08;项目管理办公室&#xff09;是在组织内部将实践、过程、运作形式化和标准化的部门&#xff0c;也是提高组织管理成熟度的核心部门。现在&#xff0c;让我们把目光投向当前PMO的典型职责之外&#xff0c;思考一下&#xff1a;PMO的未来是什么&#xff1f; 如今&a…

Java:进一步理解多态性

Java&#xff1a;进一步理解多态性 每博一文案 有人说我心里有事&#xff0c;但我谁也不想说&#xff0c;沉默不是没有情绪&#xff0c;而是我明白了&#xff0c;说了又没有意义&#xff0c; 比起诉说的委屈和不甘&#xff0c;沉默或许更好。当我们经历越多真实与虚假&#xf…

Docker安装(centos 7)

安装 以在centos安装为例&#xff0c;主要有以下几个步骤 1、确定你是CentOS7及以上版本 2、卸载旧版本 3、yum安装gcc相关 yum -y install gccyum -y install gcc-c 4、安装需要的软件包 执行如下命令 yum -y install gcc-c 5、设置stable镜像仓库 由于docker外网镜像…

Docker安装canal-admin以及canal-server

一、安装canal-admin可视化管理工具 此处的数据库已经进行了相应的配置&#xff0c;望周知 docker run -it --name canal-admin \ -e spring.datasource.addressxxx:3306 \ -e spring.datasource.databasecanal_manager \ -e spring.datasource.usernameroot \ -e spring.da…

minicom发送AT指令

参考&#xff1a;使用minicom发AT指令&#xff0c;和外设传感器通信 地址&#xff1a;https://blog.csdn.net/hannibaychty/article/details/125463268 目录1、Linux minicom 和 windows串口调试助手的区别2、使用的基本流程3、使用 minicom 需要注意的几点ARM板子外接传感器&a…

从国企到进大厂,全靠阿里、腾讯内网22版Java核心手册合集

记得19年初的时候&#xff0c;我通过一整天的笔试及面试加入一家(某一线城市国资委全资控股)某集团的研究机构(中央研究院)&#xff0c;任职高级软件工程师(中级职称);在这边工作了整整一年&#xff0c;目前已经跳槽到一家互联网公司&#xff0c;在回头看看这一整年&#xff0c…

SAP如何删除一个已经释放的请求 (SE38 : RDDIT076)

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/425479956 当你搜到这个文章的时候&#xff0c;说明你做了羞羞的事情哦&#xff5e;&#xff08;或者正在准备做羞羞的事情&#xff09;。 此处声明&#xff1a;本帖仅进行可操作性和纯技术讨论&#xff0c;由此造成的一切后…

MMSegmentation使用记录

一、官网下载文件&#xff1a; 当前最新版本为1.0.0rc2 https://github.com/open-mmlab/mmsegmentation/releases/tag/v1.0.0rc2 下载源码解压文件可得到最新版的代码 二、配置环境&#xff1a; 这部分省略&#xff1a;按照给的README文件很快就配置好了 https://github.…

Vuetify中的v-pagination如何实现分页

大家好&#xff0c;我是雄雄。 前言 昨天在改一个系统的时候遇到了个技能点&#xff0c;观察解决了好久&#xff0c;终于解决了&#xff0c;趁热打铁&#xff0c;今天来记录一下。 这个系统是个个人博客&#xff0c;目前我也在使用&#xff0c;但是有个地方用的很不舒服。就是…

32 CPP多态

注意: 1 只需要在基类的函数声明中加上virtual关键字&#xff0c;函数定义时不能加&#xff1b; 2 在派生类中重定义虚函数时&#xff0c;函数特征要相同&#xff1b; 3 当在基类中定义了虚函数时&#xff0c;如果派生类没有重定义该函数&#xff0c;那么将使用基类的虚函数…

设计模式原则 - 接口隔离原则(二)

接口隔离原则一 官方定义二 案例演示普通方案案例分析解决方案解决方案案例总结三 与单一职责原则对比一 官方定义 接口隔离原则&#xff08;Interface Segregation Principle&#xff09;&#xff0c;又称为ISP原则&#xff0c;官方定义为&#xff1a; Clients should not be…

docker安装seata单节点的详细教程

一、环境部署 1、在自己的数据库新建seata数据库 2、利用seata官方提供的seata数据库sql脚本创建所需数据库seata以及表&#xff0c;脚本地址如下&#xff1a; seata/mysql.sql at 1.4.1 seata/seata GitHub 3、查看docker官方镜像仓库版本 4、拉取seata安装镜像 docker…

【机器学习实战】基于代价敏感学习的AdaCost方法用于信用卡欺诈检测

1. 数据集 数据集地址&#xff1a;Credit Card Fraud Detection 数据集整体浏览&#xff1a; 284807个样本&#xff0c;30个特征&#xff0c;1个分类标签Class Class为0的是多数类&#xff0c;一共有284315个样本。 Class为1的是少数类&#xff0c;一共有492个样本&#xff…

写给Python社群的第11课:Python线程,进程,协程,3个毫无关系的兄弟

文章目录⛳️ 线程、进程与协程&#x1f525; 进程与线程简介⛳️ Python 多线程模块&#x1f525; threading 模块&#x1f525; threading 模块实践⛳️ Python 并发进程模块&#x1f525; Process 创建多进程⛳️ 线程、进程与协程 线程、进程、协程 这三个名称相似的概念&…

大话设计模型 Task03:工厂、制造、观察

目录一、建造者模式问题描述问题分析模式定义代码实现二、观察者模式问题描述问题分析模式定义代码实现一、建造者模式 问题描述 我的要求是你用程序画一个小人&#xff0c;这在游戏程序里非常常见&#xff0c;现在简单一点&#xff0c;要求是小人要有头、身体、两手、两脚就可…

左偏树原理详解

一 点睛 左偏树&#xff08;leftist tree 或 leftist heap&#xff09;也叫作左偏堆、左倾堆、左式堆&#xff0c;是计算机科学中的一种树&#xff0c;也是一种优先队列实现方式&#xff0c;属于可并堆&#xff0c;在信息学中十分常见&#xff0c;在统计、最值、模拟、贪心等类…

Win11安装WSL2和Nvidia驱动(2022-12-19)

文章目录前言系统环境WSL 1和WSL 2功能对比安装WSL2更新和升级包配置VSCode配置GPU加速安装Nvidia驱动安装Cuda Toolkit通过PyTorch安装CUDA Toolkit测试Nvcc参考链接前言 以前捣鼓过wsl&#xff0c;即Windows下的Linux子系统&#xff0c;但兼容性依然比不过原生的Linux系统&a…

【Linux】进程间通信之管道

目录&#x1f308;前言&#x1f338;1、IPC介绍&#x1f362;1.1、进程间通信的目的&#x1f361;1.2、背景和发展&#x1f360;1.3、进程间通信的分类&#x1f337;2、管道&#x1f361;2.1、概念&#x1f362;2.2、管道的原理&#x1f363;2.3、匿名管道&#x1f364;2.4、管…

DOM算法系列004-判断给定节点是否为body元素

UID: 20221218221939 aliases: tags: source: cssclass: created: 2022-12-18 如果我们要判定给定的一个节点是不是页面body与元素节点&#xff0c;该如何判断呢&#xff1f; 一般来说&#xff0c; 一个HTML页面内只有一个body元素 但是&#xff0c;如果我们非要在页面内写超过…

Spring boot 整合 redis

Spring boot 整合 redis一、Spring boot 整合redis1.1 启动redis1.2 redis desktop manager1.3 常用命令二、操作2.1 依赖包2.2 配置2.3 简单测试2.4 StringRedisTemplate一、Spring boot 整合redis 1.1 启动redis 命令行启动 redis-server redis-cli1.2 redis desktop mana…