CSS實(shí)現(xiàn)鼠標(biāo)頁面點(diǎn)拖動***的方法
在CSS中,我們可以使用transform
屬性來實(shí)現(xiàn)鼠標(biāo)頁面點(diǎn)拖動***,以下是一些示例代碼,展示如何實(shí)現(xiàn)這一功能:
1、創(chuàng)建一個(gè)HTML元素,用于表示可拖動的對象:
<div id="draggable" style="position:absolute; transform:translate(0, 0);"> 拖動我! </div>
2、使用CSS設(shè)置可拖動的樣式:
#draggable { width: 100px; height: 100px; background-color: #f00; border: 1px solid #000; border-radius: 5px; padding: 10px; box-shadow: 2px 2px 5px #888; }
3、使用JavaScript添加拖動事件:
var draggable = document.getElementById('draggable'); var offsetX, offsetY; var isDragging = false; var initialX, initialY; var dx = 0, dy = 0; var timer; var maxDragDistance = 200; // ***大拖動距離 var minDragDistance = 50; // ***小拖動距離 var dragSpeed = 5; // 拖動速度(像素/秒) var acceleration = 0.1; // 加速度(像素/秒平方) var friction = 0.95; // 摩擦系數(shù)(0-1) var gravity = 5; // 重力加速度(像素/秒平方) var maxVelocity = 10; // ***大速度(像素/秒) var minVelocity = -10; // ***小速度(像素/秒) var velocity = 0; // 當(dāng)前速度(像素/秒) var position = [0, 0]; // 當(dāng)前位置(像素) var initialPosition = [0, 0]; // 初始位置(像素) var accelerationVector = [acceleration, acceleration]; // 加速度向量(像素/秒平方) var frictionVector = [friction, friction]; // 摩擦系數(shù)向量(0-1) var gravityVector = [gravity, gravity]; // 重力加速度向量(像素/秒平方) var maxVelocityVector = [maxVelocity, maxVelocity]; // ***大速度向量(像素/秒) var minVelocityVector = [minVelocity, minVelocity]; // ***小速度向量(像素/秒) var velocityVector = [velocity, velocity]; // 當(dāng)前速度向量(像素/秒) var positionVector = [position[0], position[1]]; // 當(dāng)前位置向量(像素) var initialPositionVector = [initialPosition[0], initialPosition[1]]; // 初始位置向量(像素) var dragDistance = Math.sqrt(dx * dx + dy * dy); // 拖動距離(像素) var dragAngle = Math.atan2(dy, dx); // 拖動角度(弧度) var dragForce = dragDistance * Math.cos(dragAngle); // 拖動力(像素) var dragDirection = [Math.cos(dragAngle), Math.sin(dragAngle)]; // 拖動方向向量(像素) var dragSpeedVector = [dragSpeed * dragDirection[0], dragSpeed * dragDirection[1]]; // 拖動速度向量(像素/秒) var accelerationVector = [acceleration * dragDirection[0], acceleration * dragDirection[1]]; // 加速度向量(像素/秒平方) var frictionVector = [friction * dragDirection[0], friction * dragDirection[1]]; // 摩擦系數(shù)向量(0-1) var gravityVector = [gravity * dragDirection[0], gravity * dragDirection[1]]; // 重力加速度向量(像素/秒平方) var maxVelocityVector = [maxVelocity * dragDirection[0], maxVelocity * dragDirection[1]]; // ***大速度向量(像素/秒) var minVelocityVector = [minVelocity * dragDirection[0], minVelocity * dragDirection[1]]; // ***小速度向量(像素/秒) var velocityVector = [velocity * dragDirection[0], velocity * dragDirection[1]]; // 當(dāng)前速度向量(像素/秒) var positionVector = [position[0] * dragDirection[0], position[1] * dragDirection[1]]; // 當(dāng)前位置向量(像素) var initialPositionVector = [initialPosition[0] * dragDirection[0], initialPosition[1] * dragDirection[1]]; // 初始位置向量(像素) function startDrag(event) { isDragging = true; initialX = event.clientX - position
版權(quán)聲明:除非特別標(biāo)注,否則均為本站原創(chuàng)文章,轉(zhuǎn)載時(shí)請以鏈接形式注明文章出處。