本文将详细介绍如何在 Vue 项目中通过文件引入 SVG 图片,并使用相对路径实现图片的灵活引用。以 SVG 文件名为 'svgmap.svg',位于父目录的 'svgmap' 文件夹为例,给出详细步骤和代码示例。

步骤

  1. **创建 SVG 文件夹:** 在项目中新建一个文件夹,用于存放 SVG 图片。例如,可以将 SVG 图片存放到 `src/assets/svgmap/svgmap.svg` 路径下。
  2. **引入 SVGIcon 组件:** 在 Vue 组件中,引入 `SvgIcon` 组件,该组件用于处理 SVG 图片的渲染。
  3. **使用 SVG 图片:** 在 Vue 组件的模板中,使用 `svg-icon` 标签引用 SVG 图片,并传入 `name` 属性,该属性对应 SVG 图片的名称。
  4. **实现 SvgIcon 组件:** 在 `SvgIcon` 组件中,使用 `computed` 属性计算 SVG 图片的路径和样式类名,并通过 `use` 标签渲染 SVG 图片。
  5. **添加样式:** 在样式文件中添加样式,定义 SVG 图片的尺寸、颜色等属性。

代码示例

1. Vue 组件

<template>
  <div>
    <svg-icon name='svgmap'></svg-icon>
  </div>
</template>

<script>
import SvgIcon from '@/components/SvgIcon.vue' // 引入 SvgIcon 组件

export default {
  name: 'demo',
  components: {
    SvgIcon // 注册 SvgIcon 组件
  }
}
</script>

2. SvgIcon 组件

<template>
  <svg :class='svgClass' aria-hidden='true'>
    <use :xlink:href='iconName'></use>
  </svg>
</template>

<script>
export default {
  name: 'SvgIcon',
  props: {
    name: {
      type: String,
      required: true // 必填项
    }
  },
  computed: {
    iconName () {
      return '../assets/svgmap/svgmap.svg#${this.name}' // 使用相对路径引入 SVG 图片
    },
    svgClass () {
      return 'svg-icon-' + this.name
    }
  }
}
</script>

3. 样式文件

/* 引入 SVG 图片 */
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}

/* 定义 SVG 图片尺寸 */
.svg-icon svg {
  display: inline-block;
  position: relative;
  width: 100%;
  height: 100%;
}

总结

本文详细介绍了如何在 Vue 项目中通过文件引入 SVG 图片,并使用相对路径实现图片的灵活引用。通过 SvgIcon 组件和样式定义,您可以轻松地将 SVG 图片应用到您的 Vue 项目中。

Vue 项目中使用相对路径引入 SVG 图片:最佳实践指南

原文地址: https://www.cveoy.top/t/topic/ntME 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录