如何在 JavaScript 中导入 SVG 文件?

javascriptweb developmentfront end technology

可缩放矢量图形,有时称为 SVG,是一种 2D 图形或图像文件。为了创建视觉效果,SVG 文件采用数学公式和一组关于形状、线条和其他特征的指导方针。SVG 只是 XML 代码,它指定了颜色的呈现方式、每种形式相对于文件内其他形状的显示位置以及如何显示形状。

SVG 和一些其他矢量图形与依赖像素来传达视觉数据的光栅图形(如 jpeg 或 png 文件)有显著不同。

在网页设计中使用 SVG 文件的四个优点如下 -

清晰度

SVG 文件可以无限缩放。 SVG 文件与光栅图像相比具有显著优势,因为您可以随意放大和调整它们的大小,而不会失去清晰度。如果缩放不正确,光栅图像可能会失去清晰度,甚至会开始显得粗糙。

灵活性

创建响应式 SVG 文件相当容易,这些文件在任何设备上看起来都很好,即使查看者放大网页也是如此。SVG 文件可以在编辑阶段反复调整大小而不会失去清晰度。由于其适应性,SVG 文件是徽标和简单信息图表的绝佳选择。SVG 文件也可用于动画,它们对于开发具有不同配色方案和渐变的字体特别有用。

文件大小较小

根据视觉的复杂性或设计中的路径数量,SVG 文件大小可能比完全相同图像的 PNG 或 JPG 小得多。根据 Vecta.io 的说法,SVG 文件比 PNG 小 60% 到 80%,这也可以减少加载时间并改善用户体验 (UX)。更快的页面加载速度对网站 SEO 也大有裨益。

更易于访问和包容

在可访问性和多样性方面,SVG 文件具有许多优势。设计师能够在 SVG 文件本身中包含定义图形视觉元素的结构数据,这可以帮助特定辅助技术的用户了解图像中包含的内容。作为一种选择,光栅文件仅使用元数据(即替代文本)来告知屏幕阅读器和其他辅助技术有关图形的内容。

在本文中,我们将探索和使用许多 SVG 使用场景(可缩放矢量图形)。

第一种方法

最快的方法是使用 HTML <img>元素。

语法

<img src='logo.svg' alt="some file" height='100' width='100' style="color:orange;"/>

您需要以下内容才能在 <image> 中嵌入 SVG元素 −

  • src 属性

  • 当您的 SVG 没有固有纵横比时,请使用 height 属性。

  • 当您的 SVG 没有固有纵横比时,请使用 width 属性。

优点

  • 部署简单快捷。

  • 嵌套 HTML 元素 <img> 和 <a>会将 SVG 图像一起转换为超链接。

  • SVG 文件缓存,从而加快加载速度。

缺点

  • SVG 文件不易被操纵。

  • 只需内联 CSS 即可用于设置 SVG 样式。

  • CSS 伪类不能用于设置 SVG 样式。

示例 1

HTML 源代码

<!DOCTYPE html>
<html>
   <title>How to import a SVG file in JavaScript article - TutorialsPoint</title>
<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">
</head>
<body style="text-align:center">
   <body>
      <img src="https://www.tutorialspoint.com/images/logo.png" alt="tutorialspoint-logo" height="90" width="310" style="background-color: transparent" />
   </body>
</body>
</html>

第二种方法

在以下方法中,让我们了解如何将 SVG 用作 <object>

语法

<object type="image/svg+xml" data="logo.svg" class="logo">
Logo
</object>

使用"object"元素嵌入 SVG 需要以下内容 -

  • type 属性
  • data 属性
  • class 属性(使用内部/外部 CSS 时)

优点

  • SVG 可以使用外部/内部 CSS 进行样式设置。
  • 编码简单快捷。
  • 缓存性能出色。

缺点

  • 您应该使用 <style>如果您想使用外部样式表,请在 SVG 文件中添加元素。
  • 对执行和语法不熟悉。

示例 2

HTML 源代码

<!DOCTYPE html>
<html>
<title>How to import a SVG file in JavaScript article - TutorialsPoint</title>
<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">
   <link rel="stylesheet" type="css" href="styles.css" />
</head>
<body style="text-align:center">
   <object type="image/svg+xml" data="/logo.svg" class="logo">
Tutorialspoint Logo
</object>
</body>
</html>

CSS 源代码

logo {
   height: 90;
   width: 310;
}

输出

上述代码将给出以下输出 -


第三种方法

在以下方法中,让我们了解如何使用 <iframe> 嵌入 SVG。

语法

<iframe src="logo.svg" width="500" height="500">
</iframe>

<iframe>元素是嵌入 SVG 所必需的。

  • src 属性。

  • 当您的 SVG 没有固有纵横比时,请使用 height 属性。

  • 当您的 SVG 没有原生纵横比时,请使用 width 属性。

优点

  • 实现快速而简单。

  • 它与 <object> 相同元素。

缺点

  • 无法使用 JavaScript 修改 SVG。

  • 缓存并不理想。

示例 3

HTML 源代码

<!DOCTYPE html>
<html>
<title>How to import a SVG file in JavaScript article - TutorialsPoint</title>
<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">
   <link rel="stylesheet" href="style.css">
</head>
<body style="text-align:center">
   <iframe src="/logo.svg" width="200" height="120"></iframe>
</body>
</html>

相关文章