vue环形进度条组件实例应用


Posted in Javascript onOctober 10, 2018

在做项目的时候,最好只使用一套组件库,但是很多时候我们的组件库里面没有我们需要的组件,这个时候我们还是需要自己写组件了,vux里面就没有环形进度条组件,所以需要自己写一个。

查找资料后发现了一个很好的实现方式,通过svg来实现,以前的时候学过一点svg但是没有怎么深入了解过。。。现在看来真是罪过,给出参考链接

https://segmentfault.com/a/1190000008149403

可以看出原作者使用了两种方式,我们选择了第二种,简单,而且好扩展。可以看到svg就想是canvas一样进行绘图。原文已经讲得很详细了,这里就附上自己写的组件吧。伸手党们也能愉快一点。

<template>
 <svg :height="option.size" :width="option.size" x-mlns="http://www.w3.org/200/svg">
  <circle
   :r="option.radius"
   :cx="option.cx"
   :cy="option.cy"
   :stroke="option.outerColor"
   :stroke-width="option.strokeWidth"
   fill="none"
   stroke-linecap="round"/>
  <circle
   id="progressRound"
   :stroke-dasharray="completenessHandle"
   :r="option.radius"
   :cx="option.cx"
   :cy="option.cy"
   :stroke-width="option.strokeWidth"
   :stroke="option.innerColor"
   fill="none"
   class="progressRound"
  />
 </svg>
</template>
<script>
export default {
 name: 'CommonLoopProgress',
 props: {
  completeness: {
   type: Number,
   required: true,
  },
  progressOption: {
   type: Object,
   default: () => {},
  },
 },
 data () {
  return {
  }
 },
 computed: {
  completenessHandle () {
   let circleLength = Math.floor(2 * Math.PI * this.option.radius)
   let completenessLength = this.completeness * circleLength
   return `${completenessLength},100000000`
  },
  option () {
   // 所有进度条的可配置项
   let baseOption = {
    radius: 20,
    strokeWidth: 5,
    outerColor: '#E6E6E6',
    innerColor: '#FFDE00',
   }
   Object.assign(baseOption, this.progressOption)
   // 中心位置自动生成
   baseOption.cy = baseOption.cx = baseOption.radius + baseOption.strokeWidth
   baseOption.size = (baseOption.radius + baseOption.strokeWidth) * 2
   return baseOption
  },
 },
}
</script>
<style scoped lang='stylus'>
@import '~stylus/_variables.styl';
@import '~stylus/_mixins.styl';

.progressRound {
 transform-origin: center;
 transform: rotate(-90deg);
 transition: stroke-dasharray 0.3s ease-in;
}
</style>

修改了原文中的一些不好的命名方式,并且让我们的组件方便配置,可以自由一点。

以上就是本次知识点的全部内容,感谢大家对三水点靠木的支持。

Javascript 相关文章推荐
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
ES6中Math对象新增的方法实例详解
Apr 25 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
Apr 28 Javascript
Vue 中如何正确引入第三方模块的方法步骤
May 05 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
详解vue中v-for的key唯一性
May 15 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 #Javascript
详解Node.js读写中文内容文件操作
Oct 10 #Javascript
angular6的响应式表单的实现
Oct 10 #Javascript
JS原生带缩略图的图片切换效果
Oct 10 #Javascript
js实现前面自动补全位数的方法
Oct 10 #Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 #Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 #Javascript
You might like
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
php封装实现钉钉机器人报警接口的示例代码
2020/08/08 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
js实现日期级联效果
2014/01/23 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python中字典的基本知识初步介绍
2015/05/21 Python
Python装饰器基础详解
2016/03/09 Python
Python第三方库的安装方法总结
2016/06/06 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python识别验证码的思路及解决方案
2020/09/13 Python
Pycharm中如何关掉python console
2020/10/27 Python
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
高级人员简历的自我评价分享
2013/11/03 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
项目经理聘任书
2014/03/29 职场文书
低碳环保倡议书
2014/04/14 职场文书
毕业生工作求职信
2014/06/30 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
开网店计划分析
2019/07/30 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis