Heim > Web-Frontend > CSS-Tutorial > Wie kann ich CSS3-Übergangsendereignisse in verschiedenen Browsern zuverlässig erkennen und verarbeiten?

Wie kann ich CSS3-Übergangsendereignisse in verschiedenen Browsern zuverlässig erkennen und verarbeiten?

Linda Hamilton
Freigeben: 2024-12-04 21:41:13
Original
597 Leute haben es durchsucht

How Can I Reliably Detect and Handle CSS3 Transition End Events Across Different Browsers?

Browserübergreifende Normalisierung von CSS3-Übergangsendereignissen

Der Umgang mit unterschiedlichen Namen von CSS3-Übergangsendereignissen in verschiedenen Browsern kann eine Herausforderung sein. Hier sind einige Ansätze, um dieses Problem zu beheben:

Browser-Sniffing

Ein Ansatz ist das Browser-Sniffing, wie unten gezeigt:

var transitionend = (isSafari) ? "webkitTransitionEnd" : (isFirefox) ? "transitionEnd" : (isOpera) ? "oTransitionEnd" : "transitionend";

element.addEventListener(transitionend, function() {
  // Do something
}, false);
Nach dem Login kopieren

Diese Methode sucht nach bestimmten Browser-Benutzeragenten und weist den entsprechenden Ereignisnamen zu. Es basiert jedoch auf bestimmten vordefinierten Regeln und berücksichtigt möglicherweise nicht alle Browserversionen oder potenziellen Variationen.

Mehrere Ereignis-Listener

Alternativ können Sie mehrere Ereignis-Listener anhängen Name jedes unterstützten Browserereignisses:

element.addEventListener("webkitTransitionEnd", fn);
element.addEventListener("oTransitionEnd", fn);
element.addEventListener("transitionEnd", fn);

function fn() {
  // Do something
}
Nach dem Login kopieren

Dieser Ansatz behandelt alle unterstützten Ereignisse, kann jedoch zu einer unnötigen Ereignisbehandlung führen Overhead.

Verbesserte Technik von Modernizr

Ein robusterer und browserübergreifender Ansatz besteht darin, den Namen des Übergangsendereignisses mithilfe der Modernizr-Bibliothek dynamisch zu bestimmen:

function transitionEndEventName() {
  var el = document.createElement('div'),
      transitions = {
        'transition':'transitionend',
        'OTransition':'otransitionend',
        'MozTransition':'transitionend',
        'WebkitTransition':'webkitTransitionEnd'
      };

  for (var i in transitions) {
    if (transitions.hasOwnProperty(i) && el.style[i] !== undefined) {
      return transitions[i];
    }
  }

  throw 'TransitionEnd event is not supported in this browser'; 
}

var transitionEnd = transitionEndEventName();
element.addEventListener(transitionEnd, theFunctionToInvoke, false);
Nach dem Login kopieren

Diese Technik vermeidet Browser-Sniffing und erkennt dynamisch den unterstützten Ereignisnamen basierend auf dem unterstützten CSS des Elements Eigenschaften.

Das obige ist der detaillierte Inhalt vonWie kann ich CSS3-Übergangsendereignisse in verschiedenen Browsern zuverlässig erkennen und verarbeiten?. 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