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 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 Javascript
JQuery对id中含有特殊字符的转义处理示例
Sep 06 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
Feb 13 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 Javascript
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
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
python中tab键是什么意思
2020/06/18 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
什么是serialVersionUID
2016/03/04 面试题
妇科医生自荐信
2013/11/05 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
安全生产月演讲稿
2014/05/09 职场文书
摄影展策划方案
2014/06/02 职场文书
物流专业求职信
2014/06/30 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
干部外出学习心得体会
2016/01/18 职场文书