Red de conocimiento informático - Material del sitio web - Cómo usar js para lograr un efecto deslizante

Cómo usar js para lograr un efecto deslizante

La idea principal es: calcular directamente la velocidad desde el punto actual del mouse hasta el siguiente punto. De esta forma se consigue el efecto de deslizamiento inercial.

La siguiente es una implementación de código js simple: solo como referencia:

ltstyle gt

#div1{? Ancho: 100px;? Alto: 100 px;? Fondo: rojo;? Posición: Absoluta;? Izquierda: 0px? arriba: 0; }

lt/estilo gt;

lt script gt

ventana.onload=función(){

var ? oDiv = documento. getelementbyid('div 1');

var? iSpeedX = 0;

var? iVelocidadY = 0;?

var? últimoX = 0;

var? últimoY = 0;

var? temporizador = nulo?

Evento de pulsación del ratón de Odiv. onmousedown = function (ev) {//div calcula principalmente la posición actual del mouse y su posición de movimiento. Esto calcula la velocidad de movimiento del mouse.

var? oEvento=ev? ||?Evento;

var? disX = OE ventilación. clientx-odiv .desplazamiento izquierdo;

var? disY = OE vent . clienty-odiv . offsettop;

clearInterval(timer);

documento . //Evento de arrastre del mouse. ?

var? oEvento=ev? ||?evento;?

estilo odiv .izquierda = ventilación OE.clientex-disX 'px';

iSpeedX = ventilación OE. clientex-últimoX;

iSpeedY = ventilación OE.

lastX = oEvent.clientX

lastY = oEvent.clientY

}

Documentación. onmouseup = function(){// Cuando se levanta el mouse, borra el evento de movimiento.

document.onmousemove = nulo

document.onmouseup = nulo?

oDiv.releaseCapture? amperio amperio? odiv . liberar captura();

iniciar movimiento();

}

oDiv.setCapture? amperio amperio? odiv.set capture();

¿Volver? Falso;?

}?

¿Función? StartMove(){// función de movimiento, la operación principal es calcular la velocidad y dirección del movimiento del mouse.

clearInterval(temporizador);

timer=setInterval(función(){

iSpeedY = 3;

var?t = odiv . offsettop es peedy;

var? l = odiv . offset left

if(t gt;document . document element . client height-odiv . offset height){< / p>

t = documento. elemento del documento. altura del cliente-odiv.

iSpeedY * =-0.8

iSpeedX * = 0.8

< p; >}?

if(t lt; 0){

t = 0;

iSpeedY * =-0.8

iSpeedX; * = 0.8

}

if (l gtdocument. elemento del documento. ancho del cliente-odiv. ancho de desplazamiento){

l = ancho del documento del cliente -. odiv ancho de desplazamiento;?

iSpeedX * = -0,8

iSpeedY * = 0,8

}

if(l lt; 0 ){

l = 0;

iSpeedX * =-0.8;

iSpeedY * = 0.8

}

estilo odiv . izquierda = l ' px ';

estilo odiv . iSpeedX = 0;

if(math. ABS(iSpeedY) lt; 1)iSpeedY = 0

if(iSpeedX==0? amp amp?iSpeedY==0? amp amp? t = = documento. elemento del documento. altura del cliente-odiv. altura de desplazamiento){

clearInterval(timer);

}

documento. yo;

}, 30);?

}

};

lt/script gt

lt/head gt

ltbody gt;

ltdiv? id="div1 " > lt/div gt;

lt/cuerpo