当前位置:网站首页>通过事件绑定实现动画效果
通过事件绑定实现动画效果
2022-07-04 16:03:00 【richest_qi】
前情提要
本例涉及的事件类型有:
touchstart,手指触摸动作开始 时触发。touchmove,手指触摸后移动 时触发。touchend,手指触摸动作结束 时触发。
事件触发时,事件处理函数会接收到一个事件对象,该事件对象包含的属性因事件类型不同而有些许差异,其中,雨露均沾的属性有:
type,事件类型。timeStamp,事件生成时的时间戳。target,是一个对象,包含如下属性:id,事件源组件的id。dataset,事件源组件上的由data-开头的自定义属性组成的集合。
currentTarget,是一个对象,包含如下属性:id,当前组件的id。dataset,当前组件上由data-开头的自定义属性组成的集合。
mark,事件标记数据。
除了以上基础属性,TouchEvent的事件对象还包含如下属性:
touches,当前停留在屏幕上的触摸点信息的集合。touches是一个数组,每个数组元素是一个Touch对象,表示当前停留在屏幕上的触摸点。Touch对象包含如下属性:identifier,数值类型,是触摸点的标识符。pageX,距离文档左上角的横向距离。pageY,距离文档左上角的纵向距离。clientX,距离页面可视区域左上角的横向距离。clientY,距离页面可视区域左上角的纵向距离。
changedTouches,当前变化的触摸点信息的数组。
小程序项目
代码涉及的主要文件有:
- app.json
- pages/index/index.wxml
- pages/index/index.wxss
- pages/index/index.js

app.json
{
"pages": [
"pages/index/index"
],
"window": {
"navigationBarBackgroundColor": "#971a22",
"navigationBarTitleText": "首页",
"navigationBarTextStyle": "white"
},
"style": "v2",
"sitemapLocation": "sitemap.json"
}
pages/index/index.wxml
<view class="indexContainer">
<view class="header"></view>
<view class="content" bindtouchstart="handleTouchStart" bindtouchmove="handleTouchMove" bindtouchend="handleTouchEnd" style="transform: translateY({
{
moveDistance}}rpx);transition: {
{
transitionSettings}};" >
<image src="/static/images/arc.png"></image>
</view>
</view>
pages/index/index.wxss
.indexContainer{
padding: 0 20rpx;
}
.header{
margin-top: 10rpx;
background: lightskyblue;
height: 300rpx;
border-radius: 10rpx;
}
.content{
margin-top: -100rpx;
height: 600rpx;
background: #f7f7f7;
border-bottom-right-radius: 10rpx;
border-bottom-left-radius: 10rpx;
position: relative;
}
.content image{
position: absolute;
top: -40rpx;
width: 100%;
height: 40rpx;
}
pages/index/index.js
let startY = 0;
let endY = 0;
let distance = 0;
let MIN_DIS = 0;
let MAX_DIS = 80
Page({
data:{
moveDistance:0,
transitionSettings:"none"
},
handleTouchStart(e){
// console.log("touch start");
startY = e.touches[0].clientY;
this.setData({
transitionSettings:"none"
})
},
handleTouchMove(e){
// console.log("touch move");
endY = e.touches[0].clientY;
distance = endY - startY;
if(distance < MIN_DIS) return;
if(distance > MAX_DIS) distance = MAX_DIS;
this.setData({
moveDistance:distance
})
},
handleTouchEnd(){
// console.log("touch end");
this.setData({
moveDistance:0,
transitionSettings:"transform .5s linear"
})
}
})
相关链接
边栏推荐
- Pytorch深度学习之环境搭建
- Perfectly integrated into win11 style, Microsoft's new onedrive client is the first to see
- To sort out messy header files, I use include what you use
- 内核中时间相关的知识介绍
- [acwing] 58 weeks 4489 Longest subsequence
- 智捷云——元宇宙综合解决方案服务商
- 设置窗体透明 隐藏任务栏 与全屏显示
- It's too convenient. You can complete the code release and approval by nailing it!
- What if Kaili can't input Chinese???
- 【华为HCIA持续更新】SDN与FVC
猜你喜欢

Analysis of abnormal frequency of minor GC in container environment

Hidden corners of coder Edition: five things that developers hate most

Zebras are recognized as dogs, and the reason for AI's mistakes is found by Stanford

Detectron2 installation method

我写了一份初学者的学习实践教程!

Rainfall warning broadcast automatic data platform bwii broadcast warning monitor

Easy to use map visualization

上网成瘾改变大脑结构:语言功能受影响,让人话都说不利索

【HCIA持续更新】WLAN工作流程概述

detectron2安装方法
随机推荐
超标量处理器设计 姚永斌 第5章 指令集体系 摘录
[HCIA continuous update] overview of WLAN workflow
R language plot visualization: plot visualizes overlapping histograms and uses geom at the top edge of the histogram_ The rug function adds marginal rug plots
Datakit -- the real unified observability agent
How to choose one plus 10 pro and iPhone 13?
【HCIA持续更新】WLAN工作流程概述
[HCIA continuous update] WLAN overview and basic concepts
KS007基于JSP实现人个人博客系统
Electronic pet dog - what is the internal structure?
就在今天丨汇丰4位专家齐聚,共讨银行核心系统改造、迁移、重构难题
【HCIA持续更新】网络管理与运维
[acwing] 58 weeks 4489 Longest subsequence
7 RSA Cryptosystem
wuzhicms代码审计
VSCode修改缩进不成功,一保存就缩进四个空格
中银证券网上开户安全吗?
码农版隐秘的角落:作为开发者最讨厌的5件
gatling 之性能测试
I2C子系统之适配器的设备接口分析(i2c-dev.c文件分析)
【Unity UGUI】ScrollRect 动态缩放格子大小,自动定位到中间的格子