Wie verwende ich Zeigerereignisse, um nur auf Scroll-Ereignisse zu reagieren?

Lesezeit: 3 Minuten

Benutzer-Avatar
Ben Muircroft

Ist es möglich, Zeigerereignisse so einzustellen, dass sie nur auf das Scrollen oder Ziehen auf einem Touchpad reagieren? Ich habe ein div ‘im Weg’ zum Scrollen einer komplexen HTML-Anordnung * und ich würde gerne wissen, ob ich die Zeigerereignisse darauf beschränken kann, nur auf Scroll- / Mausradaktionen zu reagieren.

Mich würde interessieren, ob ich das richtig verstehe. Wenn pointer-events:none; bedeutet, dass alle Ereignisse ungültig sind, wie kann ich alle Ereignisse beenden, aber eines aktiv lassen?

Ich habe einen HTML-Bereich eingerichtet, der größer ist als das Feld, in das er passt, aber wenn ich die Bildlaufleiste anzeigen würde, würde sie aufgrund eines Popup-Elements (Position: Top) höher erscheinen, als sie sein sollte. Dieser Bereich muss noch gescrollt werden, um dies zu erreichen, habe ich jQuery verwendet, um meine ‘Box zum Scrollen’ dazu zu bringen, einem unsichtbaren Div innerhalb eines Div zu folgen:

<div id="scrollcontrol"style="overflow-y:auto;overflow-x:hidden;position:absolute;
   top:12px;left:180px;width:40px;height:1300px;">
   <div id="catscrollpos"style="position:absolute;
    top:0px;width:200px;height:2250px;">
   </div>
</div>

Skript

$('#scrollcontrol').scroll(function({
  $('#rangetable').css({
  'top':$('#catscrollpos').position().top+'px'
  });
});

  • Die Eigenschaft stammt aus der SVG-Spezifikation und ist für HTML-Elemente noch sehr eingeschränkt (vgl developer.mozilla.org/en-US/docs/Web/CSS/pointer-events). Die einzigen unterstützten Werte für pointer-events auf HTML-Elemente sind nonewodurch das Element Zeigerereignisse vollständig ignoriert (obwohl die Ereignisse möglicherweise zu übergeordneten Elementen unter dem Element sprudeln), und auto die das Standardverhalten festlegt.

    – tobi

    17. Oktober 2013 um 9:41 Uhr

  • Bitte überprüfen Sie, ob Sie die Scroll-Ereignisse von Touch-Geräten verwenden können. w3schools.com/jquerymobile/jquerymobile_events_scroll.asp

    – Ravitur

    17. April 2015 um 12:56 Uhr

Benutzer-Avatar
GibboK

Wie für die Spezifikation in der Dokumente:

Wenn ein Element angewendet wurde pointer-events: none;

Das Element ist noch nie das Ziel von irgendein Mausereignisse und alle Ereignisse sind ungültig;

Bitte sehen Sie sich diese Demonstration an:

http://jsbin.com/wewosumehi/1/

Ereignisse werden nicht ausgelöst, Sie können nicht einmal scrollen container.

  • ach das ist so schade

    – SuperUberDuper

    14. April 2017 um 10:24 Uhr

  • Dies beantwortet die gestellte Frage, aber ich und ich bin mir sicher, dass das OP sich fragt, ob es eine andere Möglichkeit gibt, dies zu erreichen. Gibt es im Grunde genommen ein Äquivalent zu “Zeigerereignisse: keine”, mit dem weiterhin gescrollt werden kann? Ich möchte auch, dass die Bildlaufleiste anklickbar ist, aber ich bin mir bei der OP nicht sicher.

    – trysis

    28. Juli 2017 um 14:39 Uhr

  • Gibt es also eine Möglichkeit, alle Mausereignisse außer dem Scrollen einzuschränken?

    – Markieren

    25. Juli 2018 um 16:43 Uhr

  • > Ereignisse werden nicht ausgelöst, Sie können nicht einmal den Container scrollen. — Außer body. Körper scrollt wann pointer-events: none; darauf angewendet wird.

    – Wadim

    11. Dezember 2018 um 11:33 Uhr


  • Da ich hier das gleiche Problem habe, muss ich verhindern, dass alle Felder im Container bearbeitet werden, aber das Scroll-Ereignis muss ausgelöst werden, damit der Benutzer die aktuellen Werte anzeigen kann. Gibt es Änderungen daran?

    – DTS

    12. Juni um 9:36

1215810cookie-checkWie verwende ich Zeigerereignisse, um nur auf Scroll-Ereignisse zu reagieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy