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 相关文章推荐
jQuery的实现原理的模拟代码 -1 核心部分
Aug 01 Javascript
js继承的实现代码
Aug 05 Javascript
jQuery 表单验证扩展(三)
Oct 20 Javascript
javascript模块化是什么及其优缺点介绍
Sep 02 Javascript
写得不错的jquery table鼠标经过变色代码
Sep 27 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
bootstrap多种样式进度条展示
Dec 20 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
Aug 17 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 Javascript
js实现点赞按钮功能的实例代码
Mar 06 Javascript
微信小程序自定义联系人弹窗
May 26 Javascript
js编写简易的计算器
Jul 29 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 insert语法详解
2008/06/07 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python错误的处理方法
2020/06/23 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
钳工实训报告总结
2014/11/04 职场文书
2014年司法局工作总结
2014/12/11 职场文书
青年文明号汇报材料
2014/12/23 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
高考1977观后感
2015/06/04 职场文书
怒海潜将观后感
2015/06/11 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server