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框架---左滑动删除的更多相关文章

  1. 写一个js向左滑动删除 交互特效的插件——Html5 touchmove

    需求描述 需要实现类似QQ中对联系人的操作:向左滑动,滑出删除按钮.滑动超过一半时松开则自动滑到底,不到一半时松开则返回原处. 纯js实现 使用了h5的touchmove等事件,以及用js动态改变cs ...

  2. android QQ消息左滑动删除实例(优化版SwipeListViewEX)

    仿 QQ消息左滑动删除item消息实例 源代码参考:http://blog.csdn.net/gaolei1201/article/details/42677951 自己作了一些调整,全部代码下载地址 ...

  3. html5向左滑动删除特效

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. iOS边练边学--简单的数据操作(增、删、改),左滑动删除和弹窗

    一.数据刷新的原则: 通过修改模型数据,来修改tableView的展示 先修改数据模型 在调用数据刷新方法 不要直接修改cell上面子控件的属性 二.增删改用到的方法: <1>重新绑定屏幕 ...

  5. 干货--手把手撸vue移动UI框架: 滑动删除

    前言 前几天因为项目需要,用jquery写了一个swiperOut组件,然后我就随便把这个组件翻译成基于Vue的了,有兴趣的朋友可以看下.Github源码(不麻烦的话帮忙start,请各位大爷赏个星星 ...

  6. IOS uitableviewcell 向左滑动删除编辑等

    主要实现这个方法就好了 -(NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActions ...

  7. IOS UITableViewUITableView小技巧--实现cell向左滑动删除,编辑等功能

    - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return Y ...

  8. 微信小程序左滑删除功能

    效果图如下: wxml代码: <view class="container"> <view class="touch-item {{item.isTou ...

  9. H5左滑删除JS插件

    <script type="text/javascript"> /** * zepto插件:向左滑动删除动效 * 使用方法:$('.itemWipe').touchWi ...

随机推荐

  1. SSL/TLS工作原理

    以前已经介绍过HTTP协议和HTTPS协议的区别,这次就来了解一下HTTPS协议的加密原理. 为了保证网络通信的安全性,需要对网络上传递的数据进行加密.现在主流的加密方法就是SSL (Secure S ...

  2. mfc中的_T

    mfc 中的字符串表示常用_T,意为text,定义为宏定义,可以方便的定义所有字符串为UNICODE(16位,长字符)或者ANSI(8位,短字符). 如果对于所有的字符串定义了_T并且定义了预处理标志 ...

  3. Ubuntu's Software

    (1)indicator-sysmonitor & acpi (2)nvidia-prime (3)sogou (4)wps (5)ubuntu-tweak

  4. Keepalived+LVS+nginx搭建nginx高可用集群

    1. 环境准备 1. VMware; 2. 4台CentOs7虚拟主机:192.168.122.248,192.168.122.68, 192.168.122.110, 192.168.122.167 ...

  5. Python自学:第四章 遍历切片

    # -*- coding: GBK -*- players = ['charles', 'martina', 'michael', 'florence', 'eli'] print("Her ...

  6. tp5 查询本年、本月、本周的方法

    tp5自带了一些查询的方法,今天说一下查询本年.本月以及本周的方法 whereTime()//此方法代替了between and 方法 实际用法如下: ->whereTime('时间字段','y ...

  7. sublime快捷键汇总

    Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所 ...

  8. 【CSS】float

    写在前面的话: 由于CSS内容比较多,小菜没有精力从头到尾讲一遍,只能有针对性的讲解. 如果读者理解CSS盒子模型,但对于浮动不理解,那么这篇文章可以帮助你. 小菜水平有限,本文仅仅是入门教程,不当之 ...

  9. 通过jquery获取页面信息

    获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document ...

  10. luoguP1134 阶乘问题 [数论]

    题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001, ...