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 中对象的继承〔转贴〕
Jan 22 Javascript
js读写json文件实例代码
Oct 21 Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
React Router基础使用
Jan 17 Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 Javascript
JS通过识别id、value值对checkbox设置选中状态
Feb 19 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
js保存当前路径(cookies记录)
2010/12/14 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
vue实现简单图片上传
2020/06/30 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
Python解析xml中dom元素的方法
2015/03/12 Python
使用python加密自己的密码
2015/08/04 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
学年末自我鉴定
2014/01/21 职场文书
工作会议方案
2014/05/21 职场文书
授权委托书公证
2014/09/14 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
校园广播站开场白
2015/06/01 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书