Ergebnis 1 bis 7 von 7

Thema: Javascript FadeIn / Element wird erst verzögert animiert

  1. #1
    Contao-Fan
    Registriert seit
    14.07.2011.
    Beiträge
    276

    Standard Javascript FadeIn / Element wird erst verzögert animiert

    Hallo Leute,

    Ich habe Contao etwas erweitert und stelle bei bestimmten Elementen die Option "animieren" zu Verfügung.

    Zum Einsatz kommen:

    Waypoint.js (damit kann man Elemente beeinflussen sobald Sie beispielsweise in den sichtbaren Bereich kommen)
    animate.css
    modernizr

    Jetzt habe ich allerdings das Problem, dass meine Fallback variante zuerst erscheint bei Elementen die direkt beim laden der Seite schon sichtbar sind:


    1) Modernzr prüft die Browserfähigkeiten, falls cssanimations unterstützt werden, wird dem HTML Tag die Klasse zugewiesen
    1.1) ce_text animate hide (css Klassen) werden nur schlagend wenn sie Kind von html.cssanimations sind
    2) Waypoint.js "sieht" das Element und fügt die Animations-Klasse hinzu

    Jetzt habe ich das Problem dass das Element erscheint, dann hart ausgeblendet wird und dann sich animiert einblendet.

    Gibt es einen solide Lösung dafür ohne dass ich auf den Fallback verzichten muss?
    Ich möchte diesen gerne beibehalten weil sonst wären die Elemente auf hide gesetzt was natürlich ein Supergau wäre.

    Ich hoffe ich konnte Ansatzweise Beschreiben wo mein Problem liegt

    Viele Grüße

  2. #2
    Contao-Nutzer
    Registriert seit
    05.10.2012.
    Beiträge
    213

    Standard

    modernizr fügt doch auch .no-featurex Klassen hinzu?
    Also einfach im CSS Elemente generell ausblenden (ce_text animate hide), und dann bei .no-cssanimations einblenden?

  3. #3
    Contao-Fan
    Registriert seit
    14.07.2011.
    Beiträge
    276

    Standard

    Hy,

    Das klingt gut - nur wie könnte ich dann das fallback lösen für deaktiviertes js?
    no-js ist ja die erste klasse die vergeben wird oder ?

    Viele Grüße

  4. #4
    Contao-Nutzer
    Registriert seit
    05.10.2012.
    Beiträge
    213

    Standard

    Also ich würde erstmal versuchen, bei .no-js und .no-cssanimations einzublenden. Vielleicht reicht das schon aus.

    Ansonsten schau mal hier, wie man das alternativ machen könnte. Alternativ mit Inline-JS die .no-js-Klasse entfernen, das geht schneller, als modernizr geladen ist.
    Geändert von pju (23.03.2016 um 18:59 Uhr)

  5. #5
    Contao-Fan
    Registriert seit
    14.07.2011.
    Beiträge
    276

    Standard

    ok aber no-js existiert ja von anfang an und wird erst dann ersetzt - somit könnte ja wieder der unerwünschte effekt auftreten denke ich.

    Muss ich gleich mal ausprobieren.

  6. #6
    Contao-Nutzer
    Registriert seit
    05.10.2012.
    Beiträge
    213

    Standard

    Hab meinen Post gerade angepasst, war etwas voreilig

  7. #7
    Contao-Fan
    Registriert seit
    14.07.2011.
    Beiträge
    276

    Standard

    Hy Pju,


    Ich habe das nun relativ einfach gelöst (hat leider etwas gedauert):

    Animieren hat nun 3 Optionen
    1 Nicht animieren
    2 animieren (löst sofortiges animieren mittels animate.css aus)
    3 animieren beim erreichen des Viewports


    Im Detail sieht das so aus (für interessierte)

    1) ok das ist klar

    2) hier wird einfach im Template eine Klasse dem umschließenden Element hinzugefügt "animated fadeInUp" - das Script dafür habe ich von Dan Eden und heißt animate.css
    Der Vorteil ist, dass es mit den CSS Keyframes arbeitet - unterstützt ein Browser dies nicht dann ist dies zugleich das Fallback denn es wird weder animiert noch ausgeblendet.
    Nachteil - es startet sofort und somit ist das nicht so toll wenn die Elemente "below the Fold" sind und beim scrollen schon fertig animiert sind

    3) hier habe ich zusätzlich das Script waypoint.js im Einsatz das die Animationsklasse erst beim Erreichen des Elements (offset 200 px) hinzufügt.
    Allerdings muss das Element zuvor auf hide (so heißt meine css Klasse) gesetzt werden welche wiederrum nur ausgeführt werden darf wenn der Browser csstransitions unterstützt und javascript eingeschaltet ist (sonst wird die klasse hide nie entfernt)

    Vorteil: kann überall eingesetzt werden un blendet schön beim scrollen ein
    Nachteil: ist es beim laden im sichtbaren Bereich erscheint das Element hart - blendet sich aus und faded dann wieder ein (es dauert einfach ein wenig bis JS die Klassen aktualisiert).


    Ich hoffe das habe ich halbwegs verständlich erklärt - würd mich freuen wenn es jemanden hilft.
    Falls die Lösung Mist ist, bin ich natürlich auch für euer Feedback dankbar.

    Schönes Wochenende!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •