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 学习初步 入门教程
Mar 25 Javascript
js原生appendChild的bug解决心得分享
Jul 01 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
iview table高度动态设置方法
Mar 14 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
vue实现城市列表选择功能
Jul 16 Javascript
angular将html代码输出为内容的实例
Sep 30 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
使用axios请求接口,几种content-type的区别详解
Oct 29 Javascript
Vue-resource安装过程及使用方法解析
Jul 21 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
详解python tkinter模块安装过程
2020/01/06 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
项目合作意向书范本
2014/04/01 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
总结python多进程multiprocessing的相关知识
2021/06/29 Python