Elementor, GSAP, Scrolltrigger

So erstellst du eine horzontale Scroll Animation in Elementor (Free and Pro)

SHARE

Lerne, wie du eine fesselnde horizontale Scroll-Animation auf deiner Website mit Elementor Free oder Pro umsetzt – ganz ohne zusätzliche Plugins.

Horizontale Scrolling-Effekte können eine gewöhnliche Webseite in ein interaktives Storytelling-Erlebnis verwandeln. Ob Zeitstrahl, Portfolio oder Panorama – diese Technik verleiht deiner Website einen professionellen Touch. In dieser Anleitung zeige ich dir Schritt für Schritt, wie du den Horizontal-Scroll-Effekt mit Elementor umsetzt – sowohl mit der kostenlosen als auch mit der Pro-Version.

Grundstruktur verstehen

Der horizontale Scrolleffekt basiert auf einer bestimmten Container-Struktur:

  • Ein übergeordneter Scroll-Container
  • Ein Scroll-Content-Container
  • Einzelne Panel-Sektionen
  • Vertikale Container oben und unten
  • Diese hierarchische Struktur sorgt für saubere Übergänge und korrektes Animationsverhalten.

Scroll-Container einrichten

Der Haupt-Scroll-Container braucht spezifische Einstellungen für beste Performance:

  • 100 % Breite
  • Minimale Höhe: 100vh
  • Keine Abstände (Gap = 0)
  • Überlauf (Overflow) versteckt
  • Eigene CSS-Klasse: scroll-container
  • Übergänge und Overscroll-Verhalten via CSS anpassen

Scroll-Content-Container konfigurieren

Der Scroll-Content-Container dient als Wrapper für deine horizontalen Panels:

  • 100 % Breite
  • Automatische Höhe
  • Höhe: 100vh
  • Keine Ränder oder Innenabstände
  • Eigene CSS-Klasse: scroll-content
  • Umschaltung der Richtung: horizontal (Zeile) für Animation, vertikal (Spalte) für die Bearbeitung

Panel-Sektionen erstellen

Jedes horizontale Panel braucht folgende Einstellungen:

  • Breite: 100 %
  • Höhe: 100vh
  • Keine Abstände oder Ränder
  • Flex-Shrink: 0 (damit es nicht schrumpft)
  • Individuelles Styling für visuelle Unterscheidung

GSAP-Animation umsetzen

Die Animation basiert auf GSAP (GreenSock Animation Platform) mit ScrollTrigger:

  • HTML-Widget am Ende des Scroll-Content platzieren
  • Timeline mit anpassbarem scrub-Wert konfigurieren
  • Marker-Einstellungen für die Entwicklung aktivieren
  • Start- und Endpunkte für das Timing der Animation definieren
  • X-Verschiebung für flüssige Übergänge

Anpassungsmöglichkeiten

Das Setup bietet einige Optionen zur Feinabstimmung:

  • Marker im Entwicklungsmodus ein-/ausblenden
  • Delays für weichere Übergänge an Ecken einstellen

Technische Hinweise

Damit alles rund läuft, solltest du Folgendes beachten:

  • Alle Einstellungen müssen exakt gesetzt sein
  • Richtung des Containers richtig einstellen (Bearbeiten vs. Anzeigen)
  • CSS-Code-Platzierung unterscheidet sich bei Free und Pro

Weitere Animationen können innerhalb von ScrollTrigger integriert werden

Best Practices

Für optimale Performance:

  • Halter dich exakt an die Container-Einstellungen
  • Wechsle bei Bedarf zwischen horizontaler und vertikaler Ansicht
  • HTML-Widget korrekt platzieren
  • Marker vor dem Veröffentlichen deaktivieren

Fazit
Diese horizontale Scroll-Animation bringt richtig Power in deine Website! Zugegeben: Die Einrichtung braucht etwas Liebe zum Detail – aber das Ergebnis ist ein professionelles, flüssiges Scroll-Erlebnis, das die Nutzerbindung ordentlich pusht. Und das Beste: Du brauchst keine extra Plugins – egal, ob du Elementor Free oder Pro verwendest.

Dank der hohen Flexibilität eignet sich dieser Effekt perfekt für Storytelling, Produktpräsentationen oder kreative Portfolios – und bleibt dabei voll kompatibel mit beiden Elementor-Versionen.

GSAP Code

Place the HTML Widget as the last item in your Scroll Container and add this code there or in the Elementor Custom Code

<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>

<script>
  gsap.registerPlugin(ScrollTrigger);

  let container = document.querySelector(".scroll-content");
  let scrollContainer = document.querySelector(".scroll-container");

  // Timeline for horizontal scrolling and parallax effects
  let scrollTimeline = gsap.timeline({
    scrollTrigger: {
      trigger: scrollContainer,   // The element that will trigger the scroll animation
      pin: true,                  // Pins the element, making it fixed while scrolling
      scrub: 1,                   // Syncs the animation with the scroll position
      start: "top top",           // Animation starts when the top of scrollContainer meets the top of the viewport
      end: () => "+=" + container.scrollWidth,  // Sets the end point based on the width of the scroll-content
      markers: false,              // Optional, adds markers to visualize the start and end points for debugging
      invalidateOnRefresh: true   // Refreshes the end position on window resize for responsive adjustments
    }
  });

 // Add a small delay at the start (pause with no movement)
scrollTimeline.to(container, { x: 0, duration: 0.1 });

// Add Horizontal Scroll to Timeline
  scrollTimeline.to(container, {
    x: () => -(container.scrollWidth - window.innerWidth) + "px",
    ease: "none"
  });

// Add a small delay at the end
scrollTimeline.to(container, { x: () => -(container.scrollWidth - window.innerWidth) + "px", duration: 0.1 });
</script>

CSS Code

.scroll-container{
    transition: none;
    overscroll-behavior: none;
    display:flex !important; 
    width:100% !important;
    Height: 100vh !important;
    overflow: hidden !important; 
    margin: 0px !important; 
    padding: 0px !important;
}


.scroll-content{
    transition: none;
    overscroll-behavior: none;
    display:flex !important; 
    width: auto !important; 
    height: 100vh !important; 
  flex-wrap: nowrap !important; 
  gap: 0 !important; 
  flex-direction: row !important; 
  margin: 0 !important; 
  padding: 0 !important; 
}


.panel {
  display: flex !important; 
  width: 100vw !important; 
  height: 100vh !important; 
  flex-grow: 1 !important; 
  flex-shrink: 0 !important; 
  flex-basis: auto; 
  box-sizing: border-box !important; 
}

2. Code for the Elementor Free Version

Follow exactly the same steps for the setup instead of adding the CSS Codes from Above. The CSS Code will be in the following code in the Styles included. You can also add the CSS Code to your wordpress Custom CSS and add the GSAP Code in the HTML Widget.

Or just copy all the code below and this into the HTML widget.

<style>
   .scroll-container{
    transition: none;
    overscroll-behavior: none;
    display:flex !important; 
    width:100% !important;
    Height: 100vh !important;
    overflow: hidden !important; 
    margin: 0px !important; 
    padding: 0px !important;
}

.scroll-content{
    transition: none;
    overscroll-behavior: none;
    display:flex !important; 
    width: auto !important; 
    height: 100vh !important; 
   flex-wrap: nowrap !important; 
   gap: 0 !important; 
   flex-direction: row !important; 
   margin: 0 !important; 
   padding: 0 !important; 
}

.panel {
  display: flex !important; 
  width: 100vw !important; 
  height: 100vh !important; 
  flex-grow: 1 !important; 
  flex-shrink: 0 !important; 
  flex-basis: auto; 
  box-sizing: border-box !important; 
}

</style>


<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>

<script>
  gsap.registerPlugin(ScrollTrigger);

  let container = document.querySelector(".scroll-content");
  let scrollContainer = document.querySelector(".scroll-container");

  // Timeline for horizontal scrolling and parallax effects
  let scrollTimeline = gsap.timeline({
    scrollTrigger: {
      trigger: scrollContainer,   // The element that will trigger the scroll animation
      pin: true,                  // Pins the element, making it fixed while scrolling
      scrub: 1,                   // Syncs the animation with the scroll position
      start: "top top",           // Animation starts when the top of scrollContainer meets the top of the viewport
      end: () => "+=" + container.scrollWidth,  // Sets the end point based on the width of the scroll-content
      markers: true,              // Optional, adds markers to visualize the start and end points for debugging
      invalidateOnRefresh: true   // Refreshes the end position on window resize for responsive adjustments
    }
  });

 // Add a small delay at the start (pause with no movement)
scrollTimeline.to(container, { x: 0, duration: 0.1 });

// Hinzufügen des horizontalen Scrollens zur Timeline
  scrollTimeline.to(container, {
    x: () => -(container.scrollWidth - window.innerWidth) + "px",
    ease: "none"
  });

// Add a small delay at the end
scrollTimeline.to(container, { x: () => -(container.scrollWidth - window.innerWidth) + "px", duration: 0.1 });
</script>

Hey,
webdesign wordpress elementor expertin

ich bin Sabine – Webdesignerin und WordPress-Expertin. Ich entwickle professionelle Websites, die technisch überzeugen und deine Business-Ziele unterstützen.

Hier erfährst du mehr über mich. 

Für Dich!
Website Konzept erstellen Workbook - 5 Schritte Anleitung für Coaches und Therapeuten

Damit du ohne Umwege zu deiner Website kommst, habe ich dir die 5 wichtigsten Tipps zusammengestellt. So sparst du wertvolle Zeit und Geld!

Schau rein!

Besuche meinen Youtube Channel und entdecke interessante Tipps, wie du Animationen erstellst sowie weitere Tipps rund um Elementor und Webdesign.

Weitere Tipps für dein Webdesign

Wordpress website erstellen lassen kosten

WordPress Website Kosten 2026 – Realistische Preise & Kostenfaktoren

Barrierefreiheit Website Checklist Blogartikel Vorschaubild

Barrierefreie Website erstellen & prüfen – was du als Selbständige*r wissen musst (inkl. Checkliste)

Schriftart Website herausfinden Lechclick Webdesign Schriftart erkennen

Schriftart herausfinden einer Website

Gratis Guide mit konkreten Lösungen

Stopp! Bevor du deine Website baust...

…lies diese 5 Planungs-Tipps, die Selbständige & Coaches tausende Euro kosten

DSGVO Cookie Consent mit Real Cookie Banner