这是js+html的代码
import React, { Component, createRef } from "react";
import './index.less'
interface Props {
}
interface State {
}
class Drag2 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 = {
}
}
Onstart(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.Amove.bind(this)
document.ontouchend = this.Onend.bind(this)
}
}
Amove(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'
}
}
Onend() {
document.ontouchmove = null
document.ontouchend = null
}
render() {
return (
<div className='drag' ref={this.dragElement} onTouchStart={this.Onstart.bind(this)}></div>
)
}
}
export default Drag2
这是less的代码
.drag {
position: absolute;
width: 100px;
height: 100px;
background-color: red;
}