首页 > 其他分享 >利用vue-inline-svg实现将svg进行动态拆分

利用vue-inline-svg实现将svg进行动态拆分

时间:2024-01-27 16:23:09浏览次数:23  
标签:npm vue svg 导入 inline bodyImage

构想是很好的,svg的优势在于矢量,可以随便实现异形控件

就来说下这玩意怎么用吧

先用npm导入(注意版本,第三方的玩意一版本般都比较新)
vue的话是这个
npm install vue-inline-svg
我是vue3所以用的版本不一样
npm install vue-inline-svg@next
这个是npm那边的说明 如果会看这个当然以这个为准
https://www.npmjs.com/package/vue-inline-svg#vue-v3
其实我觉得两张图就能说明白了
image
image
这个是我的代码

<template>
  <div id="app">
    <inline-svg @click.native="clickHandler" :src="bodyImage" />
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import InlineSvg from 'vue-inline-svg';
import bodyImage from '../assets/bodyImage.svg';

export default defineComponent({
  name: 'App',
  components: {
    'inline-svg': InlineSvg,
  },
  data() {
    return {
      bodyImage,
    };
  },
  methods: {
    clickHandler(event: MouseEvent) {
      console.log(event.target.id); // 打印出被点击元素的 id
    },
  },
});
</script>

实现原理其实不复杂,属于是一个中间件,但是我感觉还是挺好用的,因为我试图实现异形的且不会因为缩放错位的控件(但是没有矢量图),这个图片是我通过ps切好直接导出的svg,两点至少实现了一点,另外一点的话我暂时没有那个心思去勾矢量图,所以就先丢着了。
当然如果你对这个感兴趣的话可以看看https://zhuanlan.zhihu.com/p/443288913 这里已经实现了
我试过用iframe,object导入的方式,但是失败了,一个读到的iframe是空窗体一个直接导入svg显示空白。不过还好这个够用了,把svg成功导入 添加了控制事件,就目前为止已经满足我的需求了。

标签:npm,vue,svg,导入,inline,bodyImage
From: https://www.cnblogs.com/eveningSheep/p/17991594

相关文章

  • Vue-router 子路由(嵌套路由)介绍
    在Vue.js应用程序中,路由是实现单页面应用(SPA)导航的关键。Vue-router是Vue.js官方的路由管理器,提供了声明式的路由配置方式。子路由是一种路由组织方式,允许开发者将路由嵌套在父路由下,形成层次化的路由结构。这种结构有助于更好地组织和管理复杂的应用程序。子路由的使用场......
  • 2024年1月Java项目开发指南15:vue3+AntDesignVue 设计页面
    考虑到有的同学对vue3不熟悉,因此,我把ControlView.vue这个页面清空,我们从0开始写。<templatestyle="width:100%"></template><scriptsetup></script><stylescoped></style>搭建页面的基本框架展开代码后复制你需要的代码。比如我选择上中下这种结构,我就复制上......
  • 基于Java和Vue开发的企业Ehr数智化人力管理系统源码+配套文档(提升人力资源管理效率的
    写在前面:随着企业规模的不断扩大和人力资源管理的日益复杂,传统的人力资源管理方式已经无法满足现代企业的需求。为了提高管理效率、优化资源配置、降低人力成本,越来越多的企业开始引入eHR人力资源管理系统。本文将重点介绍eHR系统在招聘管理、人事管理、考勤管理、绩效管理、社保......
  • vue实现点击按钮复制到剪切板功能
    //安装clipboard.js//npminstall--saveclipboard.js<template><div>{{params}}</div><el-buttonsize="small"class="btn">复制</el-button></template><script>importClipboardfrom'cl......
  • 基于Java+Vue开发的企业Ehr数智化人力管理系统源码+配套文档(提升人力资源管理效率的利
    写在前面:随着企业规模的不断扩大和人力资源管理的日益复杂,传统的人力资源管理方式已经无法满足现代企业的需求。为了提高管理效率、优化资源配置、降低人力成本,越来越多的企业开始引入eHR人力资源管理系统。本文将重点介绍eHR系统在招聘管理、人事管理、考勤管理、绩效管理、社保......
  • vue3 解决导航栏和header之间的空白
    vue3解决导航栏和header之间的空白现象如下图所示,导航栏和header之间有白色空隙 解决components\CommonAside.vue修改样式,添加如下代码</style>.el-menu{height:100vh;border-right:none;h3{color:#fff;text-align:center;......
  • Vue2.0新手教程:如何轻松实现数字输入框指令?
    前言前端项目中,输入框是常见的,数字输入框更是常见,我们也许用惯了UI框架或是第三方提供的数字输入框,其实我们内心也想拥有自己的一个数字输入框指令,进可以攻(灵活使用),退可以守(灵活扩展),一切尽在掌握之中,不尽于被动。需求最近用到了数字输入框,需求需要满足:设置输入的小数位数设置是......
  • vue 一个页面切到另一个页面,再切回来的时候,滚动条的位置不变(只处理当前页面)
    1、使用 beforeRouteLeave 来记录路由跳转之前滚动条的位置beforeRouteLeave(to,from,next):离开路由之前执行的函数,可用于页面的反向传值,页面跳转;beforeRouteLeave(to,from,next){console.log('beforeRouteLeave.................')this.scroll=document.......
  • vue中动态添加style样式的几种写法总结
    项目中可能会需要动态添加style行内样式,但是在长期维护的项目里面,尽量要避免使用。注意:1、凡是有-的style属性名都要变成驼峰式,比如font-size要变成fontSize。2、除了绑定值,其他的属性名的值要用引号括起来,比如backgroundColor:'#00a2ff'而不是backgroundColor:#00a2ff。......
  • vue echarts hooks 封装
    vue中echartshooks的封装,监听主体的变化,监听窗口大小的变化。监听元素大小的变化hooksimportechartsfrom'@/echart/themeInit'import{debounce}from'@/utils/dehounce'import{useAppStore}from'@/pinia'constuseEchartHooks=(id,groupId)=>{......