"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment limiter les limites de valeur CSS de l'animation de défilement de fenêtre ?

Comment limiter les limites de valeur CSS de l'animation de défilement de fenêtre ?

Publié le 2024-11-10
Parcourir:701

How to Limit CSS Value Limits of Window Scrolling Animation?

Limitation des limites de valeurs CSS de l'animation de défilement de fenêtre

Dans ce scénario, un utilisateur rencontre un problème où un élément de carte glisse pendant le défilement en bas de la page. Cependant, la carte continue de défiler indéfiniment, empêchant l'utilisateur d'atteindre le bas de la page en raison de la présence d'un pied de page.

Le but est de limiter le défilement du

représentant la carte lorsqu'elle atteint le bas d'un autre
de taille dynamique.

Le code JavaScript fourni anime la carte pour qu'elle se déplace lorsque l'utilisateur fait défiler :

$(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
            });
        }
    });
});

Résoudre le problème

L'utilisation de la méthode animate() dans la fonction de défilement n'est pas recommandée car elle peut entraîner des conflits en raison de changements continus dans le valeur de défilement, empêchant jQuery d'effectuer des animations répétitives. La fonction stop() à elle seule pourrait ne pas résoudre entièrement le problème.

Au lieu de cela, il est recommandé d'utiliser la méthode CSS. Voici un exemple :

$(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'});
    }
});

De plus, évitez d'utiliser plusieurs instructions if else dans vos calculs, car cela peut également provoquer des conflits.

Approche alternative

Pour Dans les scénarios où l'objectif est de fixer un élément de navigation à une position de défilement spécifique, envisagez l'approche suivante :

$(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'});
        }
    });
 });
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3