Taro框架---左滑动删除
index.js
import Taro, { Component } from '@tarojs/taro'
import { View,ScrollView } from '@tarojs/components'
import './index.less'
export default class Index extends Component {
config = {
navigationBarTitleText: '首页'
}
state = {
animation:'',
startX: 0, //开始坐标
startY: 0,
}
componentWillMount () { }
componentDidMount () {
// 页面渲染完成
//实例化一个动画
let animation = Taro.createAnimation({
duration: 400,
timingFunction: 'linear',
delay: 100,
transformOrigin: 'left top 0',
success: function(res) {
console.log(res)
}
})
this.setState({
animation:animation
})
}
// 滑动开始
touchstart(e){
this.setState({
startX: e.changedTouches[0].clientX,
startY: e.changedTouches[0].clientY,
})
}
//滑动事件处理 _index当前索引
touchmove(e) {
var that = this;
var startX = that.state.startX;//开始X坐标
var startY = that.state.startY;//开始Y坐标
var touchMoveX = e.changedTouches[0].clientX;//滑动变化坐标
var touchMoveY = e.changedTouches[0].clientY;//滑动变化坐标
// var isLeft = _class.indexOf("leftMove") != -1; //往左滑的位置
// var isRight = _class.indexOf("rightMove") != -1;//往右滑的位置
//获取滑动角度
var angle = that.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY });
//滑动超过30度角 return
if (Math.abs(angle) > 30) return;
//右滑
if (touchMoveX > startX){
console.log('右滑');
//实例化一个动画
let _animation = Taro.createAnimation({
duration: 400,
timingFunction: 'linear',
delay: 100,
transformOrigin: 'left top 0',
success: function(res) {
console.log(res)
}
})
_animation.translateX(0).step()
that.setState({
//输出动画
animation: _animation.export()
})
}else if(touchMoveX - startX < -10){//左滑
console.log('左滑');
//实例化一个动画
let _animation = Taro.createAnimation({
duration: 400,
timingFunction: 'linear',
delay: 100,
transformOrigin: 'left top 0',
success: function(res) {
console.log(res)
}
})
_animation.translateX(-80).step()
that.setState({
//输出动画
animation: _animation.export()
})
}
}
/**
* 计算滑动角度
* @param {Object} start 起点坐标
* @param {Object} end 终点坐标
*/
angle(start, end) {
var _X = end.X - start.X,
_Y = end.Y - start.Y
//返回角度 /Math.atan()返回数字的反正切值
return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
}
render () {
return (
<ScrollView className='history' scrollY>
{/* 每一项 */}
<View className='historyItem'>
{/* 删除 */}
<View className='itemDelete right'>删除</View>
{/* 遮盖层 */}
<View className='itemCover' onTouchStart={this.touchstart.bind(this)} onTouchEnd={this.touchmove.bind(this)} animation={this.state.animation}>显示的内容</View>
</View>
</ScrollView>
)
}
}
index.less
// 滑动
.historyItem{
width: 750px;
height: 173px;
line-height: 173px;
position: relative;
}
.historyItem .itemDelete{
width: 160px;
height: 173px;
font-size:32px;
font-family:PingFangSC-Regular;
font-weight:;
color:rgba(255,255,255,1);
line-height:173px;
text-align: center;
background:rgba(246,83,79,1);
}
.historyItem .right{
float: right;
}
.historyItem .itemCover{
position: absolute;
left:;
top:;
width: 750px;
height: 173px;
background:rgba(255,255,255,1);
border-bottom: 1px solid rgba(242,242,242,1);
}
Taro框架---左滑动删除的更多相关文章
- 写一个js向左滑动删除 交互特效的插件——Html5 touchmove
需求描述 需要实现类似QQ中对联系人的操作:向左滑动,滑出删除按钮.滑动超过一半时松开则自动滑到底,不到一半时松开则返回原处. 纯js实现 使用了h5的touchmove等事件,以及用js动态改变cs ...
- android QQ消息左滑动删除实例(优化版SwipeListViewEX)
仿 QQ消息左滑动删除item消息实例 源代码参考:http://blog.csdn.net/gaolei1201/article/details/42677951 自己作了一些调整,全部代码下载地址 ...
- html5向左滑动删除特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS边练边学--简单的数据操作(增、删、改),左滑动删除和弹窗
一.数据刷新的原则: 通过修改模型数据,来修改tableView的展示 先修改数据模型 在调用数据刷新方法 不要直接修改cell上面子控件的属性 二.增删改用到的方法: <1>重新绑定屏幕 ...
- 干货--手把手撸vue移动UI框架: 滑动删除
前言 前几天因为项目需要,用jquery写了一个swiperOut组件,然后我就随便把这个组件翻译成基于Vue的了,有兴趣的朋友可以看下.Github源码(不麻烦的话帮忙start,请各位大爷赏个星星 ...
- IOS uitableviewcell 向左滑动删除编辑等
主要实现这个方法就好了 -(NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActions ...
- IOS UITableViewUITableView小技巧--实现cell向左滑动删除,编辑等功能
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return Y ...
- 微信小程序左滑删除功能
效果图如下: wxml代码: <view class="container"> <view class="touch-item {{item.isTou ...
- H5左滑删除JS插件
<script type="text/javascript"> /** * zepto插件:向左滑动删除动效 * 使用方法:$('.itemWipe').touchWi ...
随机推荐
- shell脚本输出九九乘法表
#!/bin/bash#输出九九乘法表 for ((i=1;i<=9;i++)) do for ((j=1;j<=$i;j++)) do echo -n $j'x'$i=$(($i*$j) ...
- H5全局属性contenteditable,实现可编辑元素
<div contenteditable="true">这是一段可编辑的段落.请试着编辑该文本.</div> 效果如下:
- Delphi 中多线程同步的一些处理方法
Delphi 中多线程同步的一些处理方法 当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...
- C++之判断字符串是否是数字
文章转载自https://blog.csdn.net/Richard__Ting/article/details/80772174 判断是否为数字 #include <iostream> ...
- 李宏毅机器学习课程---2、Regression - Case Study
李宏毅机器学习课程---2.Regression - Case Study 一.总结 一句话总结: 分类讨论可能是比较好的找最佳函数的方法:如果 有这样的因素存在的话 模型不够好,可能是因素没有找全 ...
- 基于SPI的数据报过滤原理与实现
一.个人防火墙技术概述 随着网络安全问题日益严重,广大用户对网络安全产品也越来越关注.防火墙作为一种网络安全工具,早已受到大家的青睐.在PC机上使用的个人防火墙,很大程度上成为广大网民的安全保护者.W ...
- Quartz2作业监听
在本教程中,我们将展示/介绍如何创建一个JobListener,跟踪运行工作状态在作业完成等. P.S 这个例子是Quartz 2.1.5 1. Quartz 作业 作业 - 用于打印一个简单的信息, ...
- 用solr DIH 实现mysql 数据定时,增量同步到solr
基础环境: (二)设置增量导入为定时执行的任务: 很多人利用Windows计划任务,或者Linux的Cron来定期访问增量导入的连接来完成定时增量导入的功能,这其实也是可以的,而且应该没什么问题. 但 ...
- React:styled-components
``是es6的Template Literals(模版字符串),许多人对这个一知半解,今天在这边总结下: `${expression}`(表达式插补) var x; var y; sth.innerH ...
- element-ui表格点击一行展开
转载:https://www.cnblogs.com/xiaochongchong/p/8127282.html <template> <el-table :data="t ...