美文网首页js css html
SVG 在前端的7种使用方法,你还知道哪几种?

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

作者: 德育处主任 | 来源:发表于2022-12-19 22:46 被阅读0次

本文简介

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

技术一直在演变,在网页中使用 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个网站能让你的页面背景炫酷起来》
代码仓库

相关文章

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

    本文简介 点赞 + 关注 + 收藏 = 学会了 技术一直在演变,在网页中使用 SVG 的方法也层出不穷。每个时期都...

  • 全屏组件

    使用方法 fullscreen.svg文件可放入 src/assets/icons/svg/fullscreen.svg

  • 求抱抱只会说"Hug"?难怪你总是被人拒绝!

    除了hug(拥抱)、bear hug(熊抱),英文里的抱抱,你还知道哪几种?不仅抱的姿势各有不同,亲热程度也有深有...

  • loading带你svg入门

    参考资料: SVG简介-前端早读 张鑫旭--一个简单的loading demo 一、svg简介 SVG 是使用 X...

  • 2. SVG

    SVG SVG: Scaleable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已经使用...

  • Rxjs 的使用

    RxJS使用分: 前端Html 后端 前端使用方法 前端在Html中将RxJS作为普通Javascript库包引入...

  • svg基础

    随着各大浏览器对svg标准支持的越来越完备,svg在网页及移动端成为了前端工程师们的首选。 svg 基础形状 sv...

  • Nodejs 、 express中使用第三方模板svg-cap

    1.安装node、express、svg-captcha 2.使用方法 4.参数配置 补充

  • SVG动画

    在前端开发中经常需要一些过渡动画,可以借助SVG作为背景动画实现。 原文链接 animate svg中animat...

  • PS文件或文件内元素导出SVG格式

    工作中遇到图标导出SVG格式,提供前端同学,前端同学通过https://icomoon.io/app/#/sele...

网友评论

    本文标题:SVG 在前端的7种使用方法,你还知道哪几种?

    本文链接:https://www.haomeiwen.com/subject/jjxyqdtx.html