TypeScript 项目 拖拽(移动端)

本文介绍如何在TypeScript项目中实现移动端的拖拽功能,适用于使用Vue.js框架的开发。通过阅读,你将了解到如何结合typescript和javascript处理触摸事件,实现组件的拖放操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

index.tex

import React, { Component, createRef } from "react";
import { connect } from 'react-redux';

import './index.less'
interface Props {

}
interface State {

}


class Drag extends Component<Props, State>{
  startX: number = 0
  startY: number = 0
  X: number = 0
  Y: number = 0
  dragElement = createRef<HTMLDivElement>()
  constructor(props: Props) {
      super(props)
      this.state = {

      }
  }
  FnStart(ev: React.TouchEvent<HTMLDivElement>): void {
      if (this.dragElement.current) {
          this.startX = ev.changedTouches[0].pageX - this.dragElement.current?.offsetLeft
          this.startY = ev.changedTouches[0].pageY - this.dragElement.current?.offsetTop
          document.ontouchmove = this.FnMove.bind(this)
          document.ontouchend = this.FnEnd.bind(this)
      }
  }
  FnMove(ev: TouchEvent): void {
      this.X = ev.changedTouches[0].pageX - this.startX
      this.Y = ev.changedTouches[0].pageY - this.startY
      if (this.dragElement.current) {
          this.dragElement.current.style.left = this.X + 'px'
          this.dragElement.current.style.top = this.Y + 'px'
      }
  }
  FnEnd() {
      document.ontouchmove = null
      document.ontouchend = null
  }



  render() {
      return (
          <div className='drag' ref={this.dragElement} onTouchStart={this.FnStart.bind(this)}>拖拽</div>
      )
  }
}



export default connect((props, state) => Object.assign({}, props, state), {})(Drag)

index.less

.drag {
    position: relative;
    // top: 0;
    // left: 0;
    color: #fff;
    width: 100px;
    height: 100px;
    font-size: 25px;
    background-color: red;
    text-align: center;
    line-height: 100px;
    border-radius: 50%;
    cursor: pointer;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值