¿Evento de aparición/desaparición de la barra de desplazamiento en jQuery?

2 minutos de lectura

¿Evento de apariciondesaparicion de la barra de desplazamiento en jQuery
Travis

¿Hay una manera simple en jQuery de detectar cuándo aparecen y desaparecen las barras de desplazamiento en un div que tiene desbordamiento: automático? (¿Como un evento? Crucemos los dedos…)

(Preferiría no tener que mirar la altura del contenido del div)

  • Eche un vistazo a la solución de OrganicPanda en este otro hilo: http://stackoverflow.com/questions/2175992/detect-when-window-vertical-scrollbar-appears

    – Jean-François Beauchamp

    07 mar. 17 en 17:18

  • Posible duplicado de Detectar cuando aparece la barra de desplazamiento vertical de la ventana

    – usuario

    16 abr. 17 en 10:12

Otra forma de lograr esto es verificar si hay barras de desplazamiento usando scrollLeft o scrollTop:

//nudge the scrollbar away from its starting position

$('#your_selector').scrollLeft(1);

//A value of 0 is assigned if the scrollbars are at their default position, 
//or are abscent

if($('#your_selector').scrollLeft() !== 0) return true;

//put the scrollbar back to its starting position

$('#your_selector').scrollLeft(0);

  • Esta parece la solución más simple, pero creo que también desencadenará un reflujo.

    – sin bolsa de rejilla

    19 ago. 14 a las 16:10

Como han dicho otros, no hay manera fácil. Aquí hay un código que he usado en el pasado para detectar si hay una barra de desplazamiento presente.

// Used like $('#my-id').hasScrollbar();

jQuery.fn.hasScrollbar = function() {
    var scrollHeight = this.get(0).scrollHeight;

    //safari's scrollHeight includes padding
    if ($.browser.safari)
        scrollHeight -= parseInt(this.css('padding-top')) + parseInt(this.css('padding-bottom'));

    if (this.height() < scrollHeight)
        return true;
    else
        return false;
}

Tendrá que llamar a esto manualmente después de agregar o eliminar contenido del div y probablemente solo funcionará si lo llama en elementos visibles, pero es mejor que comenzar desde cero.

¿Evento de apariciondesaparicion de la barra de desplazamiento en jQuery
jAndy

Que yo sepa, no hay evento para eso.
Sin embargo, “podría” escribir su propio evento especial para eso, supongo que debe verificar la altura y el ancho.

Debería ser posible detectar barras de desplazamiento si el .innerHeight excede el .outerHeight
valor de un elemento.

  • Gracias, estaba tratando de evitar esto ya que estoy usando divs absolutamente posicionados dentro de divs relativamente posicionados. overflow:auto funciona para esto (mágicamente), pero no es tan fácil calcular la altura de los elementos internos.

    – Travis

    05 abr.


.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad