文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue怎么实现加水波纹效果

2023-06-29 06:26

关注

本篇内容主要讲解“Vue怎么实现加水波纹效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue怎么实现加水波纹效果”吧!

自定义指令

指令的作用

言简意赅,就是操作底层dom

当然vue自身有非常强大的指令功能,代替你进行dom操作,比如v-on绑定事件对不对,这应该大家熟悉的指令,100%要用到,毕竟js就是个事件驱动的语言。还有大家可以去官方文档去看看

水波纹

实现

原理

我们在点击的时候,鼠标会发散一个圆,是不是有点击事件触发了,此时我们就增加一个span标签,当然要给他设置宽高,等属性,而且我们观察,圆的颜色是慢慢没有的,所以还有opacity属性,还有span是不是跟随鼠标移动的,所以还有添加定位属性。

核心

注意发现,span发散的圆是不断变大的,所以宽高是不断变化的,变化,我们就能想到定时器,定时器里面就可以控制圆的宽高,让span变化的属性不断有规律变化,当然要有临界值,我们可以看看下图

Vue怎么实现加水波纹效果

我们可以看看需求,水波纹,肯定是要覆整个按钮的,那么span的发散半径肯定就是按钮中最大的距离,如图所示,对角线肯定最长边,一目了然。怎么求,在构造函数Math有个方法可以求Math.sqrt(a*a+b*b)所以span的宽高是2倍的最长距离。所以临界值找到了,达到都就清除定时器,让span的属性不在变化。并且删除span。

代码实现

上面我们分析了分析,接下来我们用代码实现。

结构:

 <div class="app">        <h2>{{title}}</h2>        <button v-shuibowen="">点我发散水波纹</button>        <!-- <div class="box" v-shuibowen=""></div> -->    </div>

实例化一个vue对象。

 const vm = new Vue({            data: {                title: "自定义指定设置水波纹"            }        }).$mount(".app")

自定义指令

 Vue.directive('shuibowen', {                        //binding 指令携带的变量数据            inserted: function(el, binding) {                el.addEventListener('click', function(e) {                    let x = e.clientX - el.offsetLeft                    let y = e.clientY - el.offsetTop                    //在鼠标位置增加一个span标签                    let span = document.createElement("span")                    span.style.position = "absolute"                    span.style.background = binding.value || 'rgba(150, 91, 91, .5)'                    span.style.opacity = 1;                    span.style.borderRadius = '50%'                    el.append(span)                    let width = 0                    let height = 0                    let opacity = 1                    let max_length = Math.sqrt(el.offsetWidth * el.offsetWidth + el.offsetHeight * el.offsetHeight) * 2                    let time = setInterval(() => {                        width += 5                        height += 5                        opacity -= 0.01                        //判断超出最大值时,清除定时,并且删除span                        if (width < max_length) {                            span.style.width = width + 'px'                            span.style.height = height + 'px'                            span.style.opacity = opacity;                            span.style.left = x - span.offsetWidth / 2 + 'px'                            span.style.top = y - span.offsetHeight / 2 + 'px'                        } else {                            clearInterval(time)                            time = null;                            span.remove()                        }                    }, 10)                })            }        })

到此,相信大家对“Vue怎么实现加水波纹效果”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯