2016-11-20 2 views
0

Ich habe eine Zielseite, die drei Divs verwendet. Von dreien wird nur ein Div bei einer bestimmten Bildschirmgröße angezeigt. Jeder div lädt auf einer bestimmten Bildschirmgröße mithilfe von Medienabfragen.Verhindern Abspielen von Animationen in verschiedenen Divs (mit demselben Animationseffekt) Laden in verschiedenen Bildschirmgrößen

Div1 ---> bis 800px Breite

Div2 ---> Zwischen 801px bis 1400px Breite

div3 ---> Über 1400px Breite

jedes Mal laden die Seite mit dem Hintergrundbild in meinem div Wechsel von einem Schwarz-Weiß-Bild in ein Farbbild mit den CSS-Filtern

Das Problem entsteht, wenn ich die Größe meiner Fenster. Zum Beispiel, wenn ich mein Fenster auf eine kleinere Bildschirmgröße/Fenstergröße skaliere; Div2 wird zur Anzeige gebracht: none und Div1 ist jetzt sichtbar. Als Ergebnis, da das div geladen ist, lädt es den CSS-Filtereffekt "Schwarz-Weiß-zu-Farbe" erneut. Dieser Effekt sollte jedoch nur einmal während des Ladens der Seite abgespielt werden und nicht, wenn der Browser die Größe ändert oder wenn mein iPad gedreht wird (die Bildschirmbreite erhöht sich).

Kann mir jemand eine Lösung dafür vorschlagen. Ich habe darüber nachgedacht, die Wiedergabe von Animationen nach einer bestimmten Zeit zu verhindern (die Zeit, die die Hintergrundanimation beim Laden der Seite benötigt). Kann mir jemand sagen, wie dies getan werden kann oder mit einer besseren Lösung helfen

+0

Haben Sie versucht, CSS-Medienabfragen zu verwenden? – NewToJS

+1

Willkommen bei SO. Es ist einfacher, Ihnen zu helfen, wenn Sie Ihren Code zeigen. – henrikstroem

+0

Vielleicht wird die Verwendung von Medienabfragen von Nutzen sein? Ich bin sicher, dass Sie damit herumspielen können, vielleicht finden Sie einen Weg, es aufzuräumen, aber ist kein Beispiel http://codepen.io/anon/pen/vygvjW – NewToJS

Antwort

1

Ein Weg, es zu tun könnte eine CSS-Klasse .animate auf Elternelement hinzufügen und entfernen Sie diese Klasse, sobald CSS-Filterübergang beendet. Es könnte über transitionend Ereignis geschehen. Mehr dazu hier: https://jonsuh.com/blog/detect-the-end-of-css-animations-and-transitions-with-javascript/ Dann könnten Sie in Ihrem CSS CSS-Filter-Effekt nur auf Selektor erstellen.

+0

Vielen Dank dafür. Ich habe bereits einen übergeordneten Container mit dem Klassennamen "animame", und ich verwende bereits ein Skript, um die Animation nur beim Laden der Seite zu laden. Aber meine Kernstärke ist nur CSS. Können Sie mir sagen, wie Sie das im folgenden Skript hinzufügen können (wird zum Laden verwendet, wenn die Seite startet). Es gibt eine Möglichkeit, die Klassenaniname nach 4 Sekunden zurückzusetzen, da alle meine Animationen dann enden. Ich habe bereits verwendet die CSS für aninamtion Satz keine für die Klasse aniname

Verwandte Themen