[微信小程序]手指触摸动画效果(完整代码附效果图)

 有问题可以扫码加我微信,有偿解决问题。承接小程序开发

微信小程序开发交流qq群   173683895  、 526474645 ;

正文:

本文共有两个示例,先上图 

示例一:  示例二:

示例一代码(微信小程序):

<pre class="has">
<code class="language-javascript">// pages/test/test.js
Page({
containerTap: function (res) {
var that = this
var x = res.touches[0].pageX;
var y = res.touches[0].pageY + 85;
this.setData({
rippleStyle: ''
});
setTimeout(function () {
that.setData({
rippleStyle: 'top:' + y + 'px;left:' + x + 'px;-webkit-animation: ripple 0.4s linear;animation:ripple 0.4s linear;'
});
},200)
},})

<pre class="has">
<code class="language-html"><view class="ripple" style="{{rippleStyle}}">
<view class="container" bindtouchstart="containerTap">

<pre class="has">
<code class="language-css">page{height:100%}
.container{
width:100%;
height:100%;
overflow: hidden
}
.ripple {
background-color: rgba(0,0.6);
border-radius: 100%;
height:10px;
width:10px;
margin-top: -90px;
position: absolute;
-webkit-transform: scale(0);
overflow: hidden
}
@-webkit-keyframes ripple {
100% {
-webkit-transform: scale(12);
transform: scale(12);
background-color: transparent;
}
}

示例二代码(html5)

<pre class="has">
<code class="language-html"><!DOCTYPE html>

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <<a href="https://www.jb51.cc/tag/Meta/" target="_blank" class="keywords">Meta</a> name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-<a href="https://www.jb51.cc/tag/scalable/" target="_blank" class="keywords">scalable</a>=no"&gt;
    <title>点击后水波纹扩散填充组件<a href="https://www.jb51.cc/tag/xiaoguo/" target="_blank" class="keywords">效果</a></title>
    <style>
        .btn {
            position: relative;
            width: 13em;
            height: 3em;
            margin: 2em;
            border: none;
            outline: none;
            letter-spacing: .2em;
            font-weight: bold;
            background: #F6774F;
            cursor: pointer;
            overflow: hidden;
            user-select: none;
            border-radius: 2px;
            color: #fff;
        }

        .ripple {
            position: absolute;
            background: rgba(0,.15);
            border-radius: 100%;
            transform: scale(0);
            pointer-events: none;
        }

        .ripple.show {
            animation: ripple 1s ease-out;
        }

        @keyframes ripple {
            to {
                transform: scale(2);
                opacity: 0;
            }
        }
    </style>
</head>

<body>
    <h1 class="center mt40"&gt;点击后水波纹扩散填充组件<a href="https://www.jb51.cc/tag/xiaoguo/" target="_blank" class="keywords">效果</a></h1>
    <div class="main center"&gt;
        <button id="bowen" class="btn "&gt;BUTTON</button>
    </div>
    <script>
        var addRippleEffect = function(e) {
            var target = e.target;

// target 事件属性可返回事件的目标节点(触发该事件的节点)
// console.log(e.target)
if(target.id != 'bowen') return false;
// 如果当前节点的id不等于'bowen',就返回false,停止执行函数
var rect = target.getBoundingClientRect();
// target.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。
var ripple = target.querySelector('.ripple');
// target.querySelector()方法返回文档中匹配指定 CSS 选择器的一个元素。
console.log(ripple) //这里创建一个ripple节点对象,此时为null
if(!ripple) {
ripple = document.createElement('span'); //这里ripple等于
// document.createElement()在当前节点创建一个标签元素
ripple.className = 'ripple';//这里ripple等于<span class="ripple">
// 给ripple添加一个样式类名
ripple.style.height = ripple.style.width = Math.max(rect.width,rect.height) + 'px';//这里height和width是相等的
// Math.max(a,b)返回两个指定的数中带有较大的值的那个数。
target.appendChild(ripple);//在当前节点添加ripple元素对象
// appendChild(); 在指定节点添加元素
}
ripple.classList.remove('show');//移除ripple对象名为的'show' CSS 类
// classList 属性返回元素的类名,可以使用 add() 和 remove() 方法修改它.该属性用于在元素中添加,移除及切换 CSS 类。
var top = e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop;
var left = e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft;
// e.pageY 显示鼠标的位置 offsetHeight 获取元素的高度 offsetWidth 获取元素的宽度 scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置。
ripple.style.top = top + 'px';
ripple.style.left = left + 'px';
ripple.classList.add('show');
return false;
}
document.addEventListener('click',addRippleEffect);//addEventListener('事件名称',执行函数)监听事件

</body>

相关文章

今天小编给大家分享一下excel图案样式如何设置的相关知识点,...
这篇文章主要讲解了“win10设置过的壁纸如何删除”,文中的讲...
这篇“Xmanager怎么显示远程linux程序的图像”文章的知识点大...
今天小编给大家分享一下xmanager怎么连接linux的相关知识点,...
这篇“如何重置Linux云服务器的远程密码”文章的知识点大部分...
本篇内容介绍了“Linux云服务器手动配置DNS的方法是什么”的...