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 相关文章推荐
javascript学习笔记(三)显示当时时间的代码
Apr 08 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
面向对象设计模式的核心法则
Nov 10 Javascript
jquery禁用右键示例
Apr 28 Javascript
jquery队列函数用法实例
Dec 16 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
AngularJS基础 ng-mousemove 指令简单示例
Aug 02 Javascript
jQuery中Nicescroll滚动条插件的用法
Nov 10 Javascript
vue router路由嵌套不显示问题的解决方法
Jun 17 Javascript
详解使用webpack打包编写一个vue-toast插件
Nov 08 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
js实现页面导航层级指示效果
Aug 25 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更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php学习笔记之 函数声明
2011/06/09 PHP
php实现cookie加密的方法
2015/03/10 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Python同步遍历多个列表的示例
2019/02/19 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
大家访活动实施方案
2014/03/10 职场文书
土地转让协议书
2014/04/15 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
vue elementUI表格控制对应列
2022/04/13 Vue.js
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers