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 checkbox 全选/反选及批量删除
Apr 28 Javascript
jquery阻止冒泡事件使用模拟事件
Sep 06 Javascript
javascript创建createXmlHttpRequest对象示例代码
Feb 10 Javascript
javascript实现全局匹配并替换的方法
Apr 27 Javascript
JS实现的不规则TAB选项卡效果代码
Sep 18 Javascript
Javascript的表单验证长度
Mar 16 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
Aug 06 Javascript
动态Axios的配置步骤详解
Jan 12 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
Mar 08 Javascript
JS实现简单日历特效
Jan 03 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初学者头疼问题总结
2006/07/08 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
JS隐藏参数post传值实例
2013/04/18 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
JS实现图片切换效果
2018/11/17 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
html5图片上传预览示例分享
2014/04/14 HTML / CSS
C和C++经典笔试题附答案解析
2014/08/18 面试题
红领巾心向党广播稿
2014/01/19 职场文书
运动会入场词200字
2014/02/15 职场文书
大学自主招生推荐信
2014/05/10 职场文书
关于长城的导游词
2015/01/30 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
Django路由层如何获取正确的url
2021/07/15 Python
vue自定义右键菜单之全局实现
2022/04/09 Vue.js