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 ...
随机推荐
- Mongodb安装遇到的问题
今天我第一次接触MongoDB,在安装过程中,因为对这个东西不了解,报错了我也不知道是哪里的错,还在网上查了半天资料,后来我懂了,感觉上午就是在浪费时间,是我没睡醒,没睡醒.. 在安装上MongoDB ...
- matplotlib.pyplot 属性用法
import matplotlib.pyplot as plt x_values = list(range(1, 1001)) y_values = [x**2 for x in x_values] ...
- js 默认事件取消
防止事件捕获和冒泡 :子类的事件会会发父类相同类型的事件, w3c 标准 window.event.stopPropagation也是事件对象(Event)的一个方法,作用是阻止目标元素的冒泡事件 ...
- d3创建多个svg元素
当然也可以创建dom var svg = d3.select('#svg'); svg .slectAll('circle.bb') //选中DOM中的所有circle.bb标签,当DOM中不 ...
- windows 计算器
calc sin 弧度与角度
- vue-cli3+ant-design-vue+typescript 注意事项
项目参考vue-cli3-web-init ant-design配置部分 1. 实现ant-disign-vue的按需加载方案 (1)引入所有的组件,然后加载到vue上面 components-ant ...
- 语音识别(Web Speech API)
近期看了一个语音识别的dome-----Web Speech API 本api为js调用云端接口识别 个人测试了一下,响应速度还是比较快的 注意:本API与官网需翻墙使用和访问 展示效果: 页面代码如 ...
- idea 社区版+spring boot+ssm+swagger创建rest api
新手上路,出了好多错,记录一下 1.创建数据库:springBootSsmTest 2.打开IDEA创建 Spring boot项目:File——New——Project——Spring Assist ...
- PAT_A1043#Is It a Binary Search Tree
Source: PAT A1043 Is It a Binary Search Tree (25 分) Description: A Binary Search Tree (BST) is recur ...
- enumrate用法
转自*https://www.runoob.com/python/python-func-enumerate.html*侵删 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组 ...