VUE3.0中使用SVG绘制折线箭头,并且添加线条流动动画

svg标签使用

SVG 代码

SVG 代码包括开启标签 svg 和关闭标签 /svg 。这是根元素。width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

<svg></svg>

预定义形状元素

SVG 有一些预定义的形状元素,可被开发者使用和操作:

  • 矩形 rect
  • 圆形 circle
  • 椭圆 ellipse
  • 线 line
  • 折线 polyline
  • 多边形polygon
  • 路径 path

defs 标签

defs 标签是 definitions 的缩写,它可对诸如渐变之类的特殊元素进行定义。

<defs></defs>

折线箭头绘制示例

polyline中的marker-end去绑定对应的marker的Id,refX为箭头在折线末端相对于X轴的偏移量

<template>
  <div>
    <svg :height="height" :width="width">
      <defs>
        <marker
          id="end-arrow1"
          class="end-arrow"
          fill="#008CFF"
          markerUnits="strokeWidth"
          viewBox="0 0 10 10"
          refX="9"
          refY="3.5"
          markerWidth="10"
          markerHeight="10"
          orient="auto"
        >
          <polygon points="0 0, 10 3.5, 0 7"></polygon>
        </marker>
      </defs>
      <polyline
        :class="className"
        stroke="#008CFF"
        :points="points"
        :marker-end="'url(#end-arrow' + index + ')'"
      />
    </svg>
  </div>
</template>

函数部分主要通过改变绑定的class类来改变所要展示的折线样式
index参数值控制所要展示的箭头样式
points的值代表了折线的路径’0,130 200,130 390,130’:折线从(0,130)这个点出发,经过(200,130),最后到达(390,130);分别代表了X轴和Y轴的值,起始点为(0,0),在坐标轴的第四象限扩展,从上到下,从左到右。最大值为svg标签定义的width和height

<script lang="ts">
  import { defineComponent, onMounted, ref } from 'vue';

  export default defineComponent({
    name: 'svgpolyline',
    props: {
      points: {
        type: String,
        default: '0,130 200,130 390,130',
      },
      index: {
        default: 0,
      },
      height: {
        type: Number,
        default: 718,
      },
      width: {
        default: 400,
      },
      setClass: {
        default: '',
      },
    },
    setup(prop) {
      onMounted(() => {
        if (prop.setClass !== '') className.value = prop.setClass;
      });
      const className = ref('edge');
      //改变折线样式,一般用于监听鼠标移入移出动作后,调用该函数
      const clickNode = () => {
        className.value = 'edge focused';
      };
      //折线样式复原
      const reset = () => {
        className.value = 'edge';
      };
      //折线置灰
      const setGray = () => {
        className.value = 'edge gray';
      };
      return {
        className,
        clickNode,
        reset,
        setGray,
      };
    },
  });
</script>

我这里默认为虚线了,stroke控制的就是折线的样式

<style scoped lang="less">
  .edge {
    stroke-width: 2px;
    stroke-linecap: round;
    stroke-dashoffset: 0;
    stroke-dasharray: 10;
    stroke-opacity: 1;
    fill: none;
  }
  .edge.gray {
    stroke: #b2cdeb;
  }
  .edge.focused {
    animation: 0.3s linear infinite circle-draw;
  }
  @keyframes circle-draw {
    0% {
      stroke-dashoffset: 20;
    }
    100% {
      stroke-dashoffset: 0;
    }
  }
</style>

示例

这里有左右两个svg组成,添加了focused动画以后,数据线条向两侧流动
左侧:points=" '100,60 0,60"
右侧:points="'0,60 100,60"
在这里插入图片描述

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Vue3.0使用ant-design-vue,需要先安装ant-design-vueVue3.0。可以使用npm或yarn来安装这些依赖项。 安装完成后,需要在Vue应用程序引入ant-design-vue组件。可以在main.js文件导入ant-design-vue并注册组件,如下所示: ``` import { createApp } from 'vue'; import App from './App.vue'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; const app = createApp(App); app.use(Antd); app.mount('#app'); ``` 在这个例子,我们导入了App.vue组件和ant-design-vue库。我们还导入了ant-design-vue的CSS文件。然后,我们使用Vue的createApp方法创建了一个Vue应用程序实例,并使用Antd插件注册了所有的ant-design-vue组件。最后,我们将应用程序挂载到DOM元素上。 现在,您可以在Vue组件使用ant-design-vue组件了。例如,在App.vue组件,您可以添加一个Button组件,如下所示: ``` <template> <div> <a-button type="primary">Primary Button</a-button> </div> </template> ``` 这将在页面上显示一个蓝色的主要按钮。您可以使用其他ant-design-vue组件来构建您的Vue应用程序界面。 ### 回答2: Ant Design Vue是一个优秀的Vue UI组件库,具有丰富的组件和可定制性。在Vue3.0与ant-design-vue一起使用时,需要遵循以下几个步骤: 1. 使用Vue CLI 5.0创建一个Vue3.0项目:可以使用Vue CLI 5.0创建一个新的Vue3.0项目,确保已安装Vue CLI 5.0,并在命令行输入以下命令: ``` vue create my-project ``` 2. 安装ant-design-vue:在项目目录,可以通过npm或yarn安装ant-design-vue,输入以下命令: ``` npm install ant-design-vue --save ``` 或 ``` yarn add ant-design-vue ``` 安装完成后,需要在main.js引入并使用它,输入以下代码: ``` import { createApp } from 'vue' import App from './App.vue' import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; const app = createApp(App) app.use(Antd) app.mount('#app') ``` 3. 使用ant-design-vue组件:在Vue3.0,可以使用ant-design-vue组件来构建UI界面,例如: ``` <template> <a-button type="primary"> Primary Button </a-button> </template> <script> import { Button } from 'ant-design-vue'; export default { name: 'MyComponent', components: { 'a-button': Button } } </script> ``` 在代码导入Button组件,然后在模板通过自定义标签来使用Button组件。 除了以上步骤,还可以通过自定义主题和按需加载来进一步优化ant-design-vue使用。总之,在Vue3.0使用ant-design-vue可以帮助开发人员快速构建出美观、易用的Web应用程序。 ### 回答3: Vue3.0是目前最新的Vue框架版本,它与前几个版本相比,在性能和开发效率上都有了很大的提高。而Ant Design Vue是一个非常流行的UI框架,也是许多Vue开发者所青睐的选择之一。在Vue3.0使用Ant Design Vue的方法如下: 1. 安装Ant Design Vue 在命令行输入以下命令安装Ant Design Vue: ```bash npm install ant-design-vue --save ``` 2. 在Vue项目引入Ant Design Vue 在main.js文件导入Ant Design Vue: ```javascript import { createApp } from 'vue'; import Antd from 'ant-design-vue'; import App from './App.vue'; import 'ant-design-vue/dist/antd.css'; const app = createApp(App); app.use(Antd); app.mount('#app'); ``` 在上述代码,我们通过import语句将Ant Design Vue导入到了我们的Vue项目,并使用app.use(Antd)将其引入到了Vue实例。我们还通过import 'ant-design-vue/dist/antd.css'语句引入了Ant Design Vue的CSS样式文件,以便在项目使用Ant Design Vue的样式。 3. 使用Ant Design Vue组件 现在,我们已经可以在Vue项目使用Ant Design Vue组件啦!例如,我们可以在App.vue这样使用Button组件: ```vue <template> <div> <a-button type="primary">Primary Button</a-button> </div> </template> <script> export default { name: 'App', }; </script> ``` 最后,我们需要运行npm run serve命令以启动Vue项目。在浏览器打开http://localhost:8080,应该就可以看到一个使用Ant Design Vue Button组件的页面啦! 总之,使用Ant Design Vue可以让我们快捷、高效地构建Vue项目。希望这篇回答能够帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值