写一个Vue loading 插件
网络编程 2021-07-04 14:07www.168986.cn编程入门
这篇文章主要介绍了如何写一个Vue loading 插件,帮助大家更好的理解和学习vue 插件的相关知识,感兴趣的朋友可以了解下
作者imgss
出处
什么是vue插件?
- 从功能上说,插件是为Vue添加全局功能的一种机制,比如给Vue添加一个全局组件,全局指令等;
- 从代码结构上说,插件就是一个必须拥有install方法的对象,这个方法的接收的第一个参数是Vue构造函数,还可以接收一个可选的参数,用于配置插件
var myplugin = { install:function(Vue, options){ ... } }
从意义上来说,正如jQuery的$.fn
使jQuery有了一个庞大的生态一样,Vue的插件机制使Vue形成了一个生态系统,你可以开发一个插件给别人复用。
使用插件
使用一个插件,只要像狼蚁网站SEO优化这样:
Vue.use(myPlugin)
写一个loading插件
光说不练假把式,接下来写一个loading插件练练手,这个插件被封装成一个全局组件,实现狼蚁网站SEO优化的效果:
1 定义接口
我们希望应用这个插件的方式如下:
<loading text='imgss' duration='3'></loading>
其中,text用于定义loading动画显示的文字,duration定义动画时间
2 实现静态组件
新建一个loading.js文件
let myPlugin = { install: function (Vue, options) { Vue.ponent('loading', { props: { text:{ type:String }, duration:{ type:String, default:'1s'//默认1s } }, data: function() { return {}; }, template: ` <div class='wrapper'> <div class='loading'> <span style='width:20px' v-for='char in text'>{{char}}</span> </div> </div> ` });
这里模板的作用在于,将输入的字符串转换成组成字符串的字符构成的span元素;
接下来,新建一个html文件
<html> <head> <meta charset='utf-8'> <title>插件</title> </head> <body> <div id="app"> <loading text='imgss'></loading> <loading text='我是一个粉刷匠' duration='2s'></loading> </div> <script src="http://cdn.bootcss./vue/2.4.2/vue.js"></script> <script src="./loading.js"></script> <script> Vue.use(myPlugin); var app = new Vue({ el: '#app', data: { } }); </script> </body> </html>
这时基本上可以看到一个静态效果。
3 加动画
给每个元素加上一个控制上下的animation
@keyframes move { 0% { margin-: -10px; border-bottom: 1px solid; } 50% { margin-: 10px; border-bottom: none; } 100% { margin-: -10px; } }
除此之外,还有一下其他的公有样式代码,利用mounted
生命周期函数,动态生成一个style标签,将css代码插到文档中:
mounted: function () { var cssFlag = false; return function () { if (cssFlag) { return; } var head = document.querySelector('head'); var style = document.createElement('style'); style.type = 'text/css'; style.innerText = ` .wrapper{ display: flex; justify-content: center; } .loading { display: flex; text-align: center; padding-: 30px; height: 50px; justify-content: space-between; } .loading span { margin-: 0; animation: ease infinite move; display: block; } @keyframes move { 0% { margin-: -10px; border-bottom: 1px solid; } 50% { margin-: 10px; border-bottom: none; } 100% { margin-: -10px; } }`; head.appendChild(style); cssFlag = true; }; }(),
然后通过控制span的animation-delay来模拟曲线:
<span :style='{ width: "20px", animationDuration: duration.indexOf("s") === -1 ? duration + "s" : duration , animationDelay: parseInt(duration)/text.lengthindex +"s" }' v-for='char,index in text'> {{char}} </span>
到这里,插件基本完成,看一下效果:
demo
以上就是写一个Vue loading 插件的详细内容,更多关于Vue 插件的资料请关注狼蚁SEO其它相关文章!
上一篇:vue实现标签云效果的示例
下一篇:解决Vue大括号字符换行踩的坑
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指