当前位置:网站首页>通过事件绑定实现动画效果
通过事件绑定实现动画效果
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"
})
}
})
相关链接
边栏推荐
- 【HCIA持续更新】WLAN工作流程概述
- wuzhicms代码审计
- CANN算子:利用迭代器高效实现Tensor数据切割分块处理
- It's too convenient. You can complete the code release and approval by nailing it!
- curl 命令妙用
- 【系统分析师之路】第七章 复盘系统设计(结构化开发方法)
- The 18th IET AC / DC transmission International Conference (acdc2022) was successfully held online
- Detectron2 installation method
- 防火墙基础透明模式部署和双机热备
- OPPO小布推出预训练大模型OBERT,晋升KgCLUE榜首
猜你喜欢
【HCIA持续更新】WLAN工作流程概述
leetcode:421. The maximum XOR value of two numbers in the array
RecastNavigation 之 Recast
太方便了,钉钉上就可完成代码发布审批啦!
[HCIA continuous update] WLAN overview and basic concepts
解决el-input输入框.number数字输入问题,去掉type=“number“后面箭头问题也可以用这种方法代替
Rainfall warning broadcast automatic data platform bwii broadcast warning monitor
It's too convenient. You can complete the code release and approval by nailing it!
聊聊异步编程的 7 种实现方式
MVC mode and three-tier architecture
随机推荐
To sort out messy header files, I use include what you use
NFT liquidity market security issues occur frequently - Analysis of the black incident of NFT trading platform quixotic
The Ministry of human resources and Social Security announced the new construction occupation
VSCode修改缩进不成功,一保存就缩进四个空格
RecastNavigation 之 Recast
聊聊异步编程的 7 种实现方式
雨量预警广播自动化数据平台BWII 型广播预警监测仪
解决el-input输入框.number数字输入问题,去掉type=“number“后面箭头问题也可以用这种方法代替
公司要上监控,Zabbix 和 Prometheus 怎么选?这么选准没错!
完美融入 Win11 风格,微软全新 OneDrive 客户端抢先看
detectron2安装方法
一文掌握数仓中auto analyze的使用
Blood spitting finishing nanny level series tutorial - play Fiddler bag grabbing tutorial (2) - first meet fiddler, let you have a rational understanding
New technology releases a small program UNIPRO to meet customers' mobile office scenarios
斑马识别成狗,AI犯错的原因被斯坦福找到了丨开源
R语言plotly可视化:plotly可视化多分类变量小提琴图(multiple variable violin plot in R with plotly)
Superscalar processor design yaoyongbin Chapter 6 instruction decoding excerpt
Master the use of auto analyze in data warehouse
Load test practice of pingcode performance test
Developers, MySQL column finish, help you easily from installation to entry