Cualquier información sobre cómo capturar un evento de desplazamiento en un elemento que tiene desbordamiento: ¿oculto? Me gustaría desplazarme en una columna sin mostrar una barra de desplazamiento al usuario.Evento de desplazamiento de captura en desbordamiento: elemento oculto
Respuesta
Esto es realmente un proceso un tanto en profundidad. Lo que hago es establecer indicadores globales cuando el usuario ingresa el mouse y deja el elemento que desea desplazar. Luego, en el evento mousewheel para el cuerpo, compruebo si el indicador MOUSE_OVER es verdadero, luego detengo la propagación del evento. Esto es para que el cuerpo principal no se desplace en caso de que toda la página se haya desbordado.
Tenga en cuenta que con el desbordamiento oculto, la capacidad de desplazamiento predeterminada se pierde, por lo que debe crearla usted mismo. Para hacer esto, puede configurar un oyente mousewheel en su div en cuestión y usar la propiedad event.wheelDelta para verificar si el usuario se está desplazando hacia arriba o hacia abajo. Este valor es diferente según el navegador, pero generalmente es negativo si se desplaza hacia abajo y es positivo si se desplaza hacia arriba. A continuación, puede cambiar la posición de su div en consecuencia.
Este código se cortó rápidamente, pero se vería esencialmente como esto ...
var MOUSE_OVER = false;
$('body').bind('mousewheel', function(e){
if(MOUSE_OVER){
if(e.preventDefault) { e.preventDefault(); }
e.returnValue = false;
return false;
}
});
$('#myDiv').mouseenter(function(){ MOUSE_OVER=true; });
$('#myDiv').mouseleave(function(){ MOUSE_OVER=false; });
$('#myDiv').bind('mousewheel', function(e){
var delta = e.wheelDelta;
if(delta > 0){
//go up
}
else{
//go down
}
});
Uso el desbordamiento: desplazarse, pero también colocar Absolutamente un div sobre la barra de desplazamiento para ocultarlo.
Gracias! Podría ser una buena resolución si no puedo encontrar otra solución. Sin embargo, se siente un poco feo para resolverlo. –
Claro, es un truco, pero muy elegante en mi opinión. De hecho, comencé a escribir una respuesta como @ y más allá, pero luego se me ocurrió este truco de CSS. Es mucho más simple que el método JS, lo que significa que no solo es más fácil de implementar, sino que también es menos propenso a errores. – maxedison
por ejemplo, creé esto en menos de 5 minutos: http://jsfiddle.net/ZGSVj/ – maxedison
$("body").css("overflow", "hidden")
$(document).bind('mousewheel', function(evt) {
var delta = evt.originalEvent.wheelDelta
console.log(delta)
})
funciona para mí. adaptado de How do I get the wheelDelta property?
$("div").on('wheel', function (e) {
if (e.originalEvent.deltaY < 0) {
console.log("Scroll up");
} else {
console.log("Scroll down");
}
});
Esto hizo el truco para mí. JSFiddle
StackFiddle:
$("div").on('wheel', function(e) {
if (e.originalEvent.deltaY < 0) {
console.log("Scroll up");
} else {
console.log("Scroll down");
}
});
div {
height: 50px;
width: 300px;
background-color: black;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
- 1. Desbordamiento de anulación: oculto
- 2. CSS/JavaScript - contenido fuera de un elemento con desbordamiento: oculto
- 3. Desbordamiento-x: oculto no funciona en Chrome
- 4. Impedir el desplazamiento del hijo de gran tamaño en el padre con desbordamiento: oculto (webkit)
- 5. Posición absoluta y desbordamiento oculto
- 6. jQuery .animate() fuerzas estilo "desbordamiento: oculto"
- 7. tema de desplazamiento con desbordamiento CSS: HTML desplazamiento
- 8. La barra de desplazamiento horizontal solo aparece en IE7, incluso con desbordamiento: oculto establecido
- 9. Evitar que un elemento se corte cuando están dentro de un elemento "desbordamiento: oculto"
- 10. divs en línea con desbordamiento oculto
- 11. centro imagen en div con desbordamiento oculto
- 12. captura de pantalla de escritorio oculto
- 13. Desborde una lista dentro de un div cuyo desbordamiento: oculto
- 14. Desbordamiento de CSS: oculto ocultando las viñetas de una lista?
- 15. Problema oculto de desbordamiento de cuerpo en Internet Explorer 7
- 16. enviar evento de desplazamiento programado
- 17. Sepa qué desbordamiento: oculto ha ocultado
- 18. svg - ocultar el elemento cuando sale del área de grupo, similar al desbordamiento de css oculto
- 19. desbordamiento: oculto; causando problemas de alineación en firefox
- 20. Cambiar el desplazamiento de un div oculto
- 21. HTML, desbordamiento: desplazamiento y float
- 22. desplazamiento horizontal con desbordamiento-x
- 23. iPad deshabilita desplazamiento de documento pero no desbordamiento div desplazamiento
- 24. desbordamiento de un solo elemento en un DIV
- 25. evento de cambio del campo oculto html
- 26. Ignorar la regla CSS principal de 'desbordamiento: oculto'
- 27. Desbordamiento de CSS oculto con la posición absoluta
- 28. Cómo evitar el costo de rendimiento del desbordamiento: ¿oculto?
- 29. Desbordamiento: oculto no funciona en el correo electrónico
- 30. Desbordamiento: oculto para bordes redondeados usando css3pie en IE8?
Eso es perfecto. ¡Muchas gracias! :) –
No mencioné, pero deberías mirar 'event.wheelDelta' y' event.detail' para afinar las cosas. Firefox usa 'event.detail' mientras que otros usan' event.wheelDelta' y usando estos valores puedes calcular algún control de velocidad si quieres ir a ese complejo. Este enlace ayudará a http://www.javascriptkit.com/javatutors/onmousewheel.shtml – anson
El evento mousewheel ya no funciona. Se llama rueda en los navegadores modernos. – netAction