„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man die CSS-Wertgrenzen der Fenster-Scrolling-Animation begrenzen?

Wie kann man die CSS-Wertgrenzen der Fenster-Scrolling-Animation begrenzen?

Veröffentlicht am 10.11.2024
Durchsuche:669

How to Limit CSS Value Limits of Window Scrolling Animation?

Begrenzung der CSS-Wertgrenzen der Fenster-Scroll-Animation

In diesem Szenario tritt bei einem Benutzer ein Problem auf, bei dem ein Kartenelement beim Scrollen verschoben wird unten auf der Seite. Die Karte scrollt jedoch unbegrenzt weiter, sodass der Benutzer aufgrund der vorhandenen Fußzeile nicht den unteren Rand der Seite erreichen kann.

Ziel ist es, das Scrollen des

, das die Karte darstellt, einzuschränken, wenn es angezeigt wird erreicht den unteren Rand eines anderen
mit dynamischer Größe.

Der bereitgestellte JavaScript-Code animiert die Karte so, dass sie sich bewegt, wenn der Benutzer scrollt:

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

Behebung des Problems

Die Verwendung der animate()-Methode innerhalb der Scroll-Funktion ist nicht ratsam, da dies aufgrund ständiger Änderungen in der zu Konflikten führen kann scroll-Wert, wodurch verhindert wird, dass jQuery sich wiederholende Animationen ausführt. Die Funktion stop() allein löst das Problem möglicherweise nicht vollständig.

Stattdessen wird empfohlen, die CSS-Methode zu verwenden. Hier ist ein Beispiel:

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

Vermeiden Sie außerdem die Verwendung mehrerer if else-Anweisungen in Ihren Berechnungen, da dies ebenfalls zu Konflikten führen kann.

Alternativer Ansatz

Für In Szenarien, in denen das Ziel darin besteht, ein Navigationselement an einer bestimmten Bildlaufposition zu fixieren, sollten Sie Folgendes berücksichtigen Ansatz:

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

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3