Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann verhindert werden, dass das übergeordnete Element scrollt, wenn das innere Element die Kantengrenzen erreicht?

Linda Hamilton
Freigeben: 2024-10-27 08:42:03
Original
742 Leute haben es durchsucht

How to Prevent Parent Element Scrolling When Inner Element Reaches Edge Bounds?

Verhindern des Scrollens eines übergeordneten Elements, wenn das innere Element die Kantengrenzen erreicht

In bestimmten Szenarien kann das Scrollen innerhalb eines inneren Elements ein unerwünschtes Scrollen des übergeordneten Elements auslösen Element, wenn die Kantengrenzen des inneren Elements erreicht sind. Dies kann besonders frustrierend sein, wenn Sie mit schwebenden Toolboxen oder Fenstern mit fester Positionierung interagieren.

Um diese unerwünschte Ausbreitung zu verhindern, ist es notwendig, das Scroll-Ereignis auf dem inneren Element zu behandeln und zu verhindern, dass es zum übergeordneten Element übergeht. Allerdings reicht die einfache Verwendung von event.stopPropagation() möglicherweise nicht in allen Fällen aus.

Die zuverlässigste Lösung ist die Verwendung des Mousewheel-Ereignisses, das eine Möglichkeit bietet, das Scrollverhalten in verschiedenen Browsern zu normalisieren. Indem wir das Mausrad-Delta mit der Bildlaufposition des inneren Elements vergleichen, können wir feststellen, ob der Bildlauf die obere oder untere Grenze erreicht hat.

Wenn der Bildlauf eine der beiden Grenzen erreicht hat, können wir das Ereignis abbrechen und scrollTop( von jQuery verwenden) )-Methode, um die Bildlaufposition auf den entsprechenden Mindest- oder Höchstwert festzulegen. Dieser Ansatz verhindert wirksam, dass sich das Ereignis auf das übergeordnete Element ausbreitet, und gewährleistet ein reibungsloses Scrollen innerhalb des inneren Elements.

Hier ist ein Codeausschnitt, der diese Lösung implementiert:

<code class="javascript">$(".ToolPage").bind('mousewheel', function(e, d)  {
    var t = $(this);
    if (d > 0 && t.scrollTop() === 0) {
        e.preventDefault();
    } else {
        if (d < 0 && (t.scrollTop() == t.get(0).scrollHeight - t.innerHeight())) {
            e.preventDefault();
        }
    }
});</code>
Nach dem Login kopieren

Diese Lösung berücksichtigt die Maus Scrollen nach oben und unten und verhindert unerwünschtes Scrollen des übergeordneten Elements im Internet Explorer und anderen Browsern.

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass das übergeordnete Element scrollt, wenn das innere Element die Kantengrenzen erreicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!