zoukankan      html  css  js  c++  java
  • 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:400;
        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: 0;
        top: 0;
        width: 750px;
        height: 173px;
        background:rgba(255,255,255,1);
        border-bottom: 1px solid rgba(242,242,242,1);
    }
  • 相关阅读:
    关于报错”已有打开的于此Command相关联的DataReader,必须首先将它关闭。“的问题
    Dockerjenkins环境搭建跟配置
    Python+selenium 【第十章】封装config类,读取配置文件,封装驱动类,适配windows/mac
    —— “欢迎来到我的小屋”
    Python+selenium 【第九章】封装excel类,封装test_data类 读取测试元素信息
    Linux搭建docker
    Python+selenium 【第十二章】封装日志类优化其他方法并添加日志(异常处理)
    【selenium】Python自动化面试题
    Dockerjenkins容器安装python并配置环境变量
    【优化框架】新增期望结果,断言为mysql情况下动态化参数替换
  • 原文地址:https://www.cnblogs.com/wangyuyuan/p/10683532.html
Copyright © 2011-2022 走看看