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 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
Nov 30 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
May 15 Javascript
js动态设置div的值下例子
Oct 29 Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
Jun 17 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
js闭包用法实例详解
Dec 13 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 Javascript
webpack4 入门最简单的例子介绍
Sep 05 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
Apr 25 Javascript
jQuery实现广告显示和隐藏动画
Jul 04 jQuery
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/10/09 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
python套接字流重定向实例汇总
2016/03/03 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
文言文形式的学生求职信
2013/12/03 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
担保书范文
2019/07/09 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server