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 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
JavaScript实现简单的时钟实例代码
Nov 23 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
jquery表单插件form使用方法详解
Jan 20 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
Nov 24 Javascript
vue forEach循环数组拿到自己想要的数据方法
Sep 21 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
使用JavaScript实现贪吃蛇游戏
Sep 29 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 Javascript
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 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
文件上传的实现
2006/10/09 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
Python程序语言快速上手教程
2012/07/18 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python装饰器用法实例总结
2018/05/26 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
python写日志文件操作类与应用示例
2019/07/01 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
法学自荐信
2014/06/20 职场文书
学雷锋标语
2014/06/25 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python