"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo limitar los límites de valor CSS de la animación de desplazamiento de ventana?

¿Cómo limitar los límites de valor CSS de la animación de desplazamiento de ventana?

Publicado el 2024-11-10
Navegar:716

How to Limit CSS Value Limits of Window Scrolling Animation?

Limitación de los límites de valores CSS de la animación de desplazamiento de ventana

En este escenario, un usuario experimenta un problema en el que un elemento del mapa se desliza a medida que se desplaza abajo de la página. Sin embargo, el mapa continúa desplazándose indefinidamente, impidiendo que el usuario llegue al final de la página debido a la presencia de un pie de página.

El objetivo es limitar el desplazamiento del

que representa el mapa cuando llega al final de otro
de tamaño dinámico.

El código JavaScript proporcionado anima el mapa para que se mueva a medida que el usuario se desplaza:

$(function() {

    var $sidebar   = $("#map"),
        $window    = $(window),
        offset     = $sidebar.offset(),
        topPadding = 15;

    $window.scroll(function() {
        if ($window.scrollTop() > offset.top) {
            $sidebar.stop().animate({
                marginTop: $window.scrollTop() - offset.top   topPadding
            });
        }
        else {
            $sidebar.stop().animate({
                marginTop: 0
            });
        }
    });
});

Abordar el problema

No se recomienda utilizar el método animate() dentro de la función de desplazamiento, ya que puede generar conflictos debido a los cambios continuos en el valor de desplazamiento, evitando que jQuery realice animaciones repetitivas. Es posible que la función stop() por sí sola no resuelva el problema por completo.

En su lugar, se recomienda utilizar el método CSS. Aquí hay un ejemplo:

$(window).scroll(function() {
    var scrollVal = $(this).scrollTop();
    if ( scrollVal > offset.top) {
        $sidebar.css({
           'margin-top': (($window.scrollTop() - offset.top)   topPadding)   'px'
                       //added  'px' here to prevent old internet explorer bugs
        });
    } else {
        $sidebar.css({'margin-top':'0px'});
    }
});

Además, evite utilizar varias declaraciones if else en sus cálculos, ya que esto también puede causar conflictos.

Enfoque alternativo

Para En escenarios en los que el objetivo es fijar un elemento de navegación en una posición de desplazamiento específica, considere el siguiente enfoque:

$(document).ready(function() {
   $(window).scroll(function() {
       var headerH = $('.header').outerHeight(true);
      //this will calculate header's full height, with borders, margins, paddings
       console.log(headerH);
       var scrollVal = $(this).scrollTop();
        if ( scrollVal > headerH ) {
        //when scroll value reach to your selector
            $('#subnav').css({'position':'fixed','top' :'0px'});
        } else {
            $('#subnav').css({'position':'static','top':'0px'});
        }
    });
 });
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3