这篇文章主要介绍了Vue如何制作波纹按钮,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
专注于为中小企业提供成都网站制作、网站设计、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业闻喜免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。先说一下用法:
默认按钮 默认按钮 定义速度和初始的波浪透明度
原理:
这里用的是canvas + requestAnimationFrame(兼容性可以网上找一下解决方法) 绘制的波纹,有些用的是css transform + setTimeout做的,我感觉不太好。
模板(template):
点击代码如下(我已经加入详细的注释)
ripple(event) { // 清除上次没有执行的动画 if (this.timer) { window.cancelAnimationFrame(this.timer); } this.el = event.target; // 执行初始化 if (!this.initialized) { this.initialized = true; this.init(this.el); } this.radius = 0; // 点击坐标原点 this.origin.x = event.offsetX; this.origin.y = event.offsetY; this.context.clearRect(0, 0, this.el.width, this.el.height); this.el.style.opacity = this.opacity; this.draw(); },
这里主要初始化canvas和获取用户点击的位置坐标,并开始绘制。
循环绘制
draw() { this.context.beginPath(); // 绘制波纹 this.context.arc(this.origin.x, this.origin.y, this.radius, 0, 2 * Math.PI, false); this.context.fillStyle = this.color; this.context.fill(); // 定义下次的绘制半径和透明度 this.radius += this.speed; this.el.style.opacity -= this.speedOpacity; // 通过判断半径小于元素宽度或者还有透明度,不断绘制圆形 if (this.radius < this.el.width || this.el.style.opacity > 0) { this.timer = window.requestAnimationFrame(this.draw); } else { // 清除画布 this.context.clearRect(0, 0, this.el.width, this.el.height); this.el.style.opacity = 0; } }
感谢你能够认真阅读完这篇文章,希望小编分享的“Vue如何制作波纹按钮”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站设计公司,关注创新互联成都网站设计公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。