Marquee

v1.0.05,3 kB gzipkostenlos

Ein Laufband, das endlos läuft — aus deinen eigenen Elementen, in jede Richtung, mit demselben Tempo auf jeder Bildschirmbreite.

Tutorial-Video
Lässt sich mit KI umsetzen, der Prompt ist vorbereitet
Live-Demo ansehenCloneable holen
Das Prinzip · Warum Marquee

Eine Interaktion läuft über eine feste Dauer. Derselbe Weg ist auf einem 1440er Bildschirm länger als auf einem 390er — oben rast das Band, unten schleicht es. Hier wird die Breite deines Inhalts gemessen und die Dauer daraus berechnet. Das Tempo bleibt das, was du hingeschrieben hast.

sfeste Dauer je Bildschirm
px/sgleiches Tempo überall
  1. WrapperDer sichtbare Ausschnitt. Was darüber hinausragt, wird verdeckt.
  2. TrackSeine Kinder bilden eine Wiederholung. Sie werden gruppiert und so oft kopiert, bis der Ausschnitt doppelt gefüllt ist.
  3. LoopDer Track wandert um genau eine Wiederholung. Am Ende steht die nächste Kopie dort, wo die erste begann — die Naht ist nicht zu sehen.

Dieses <script> in den Custom Code deines Projekts

Einmal pro Projekt genügt, auch wenn du die Lösung auf mehreren Seiten nutzt: Project Settings → Custom Code → Head Code. Das Skript lädt nebenher und hält das Rendern nicht auf; es läuft erst, wenn die Seite steht, und tut nichts, solange kein fpu-Attribut da ist.

<!-- FlowPowerUser · Marquee -->
<script defer src="https://cdn.jsdelivr.net/npm/@flowpoweruser/attributes@1/marquee.js"></script>

Ausschnitt und Inhalt markieren

Es braucht zwei Elemente ineinander. Außen der Wrapper — er begrenzt, was man sieht, und bekommt automatisch overflow: hidden. Darin der Track, und in dem liegen deine Elemente nebeneinander; ein Flex-Layout mit Gap ist dafür das Übliche. Alles Weitere entsteht beim Laden: Deine Elemente wandern in eine Gruppe, und die wird kopiert, bis der Ausschnitt gefüllt ist.

Auf den Wrapperder sichtbare Ausschnitt
AttributWertBeschreibung
Schaltet die Lösung für dieses Laufband ein und begrenzt den sichtbaren Bereich. Pflicht.
Auf den Trackim Wrapper
AttributWertBeschreibung
Das Element, dessen Kinder eine Wiederholung bilden. Genau diese Kinder werden gruppiert und kopiert. Pflicht.
Im Navigator
Marquee Wrapper       fpu-marquee-element="wrapper"
└─ Marquee Track      fpu-marquee-element="track"
   ├─ Logo 1
   ├─ Logo 2
   ├─ Logo 3
   └─ Logo 4

Veröffentlichen und nachmessen

Seite veröffentlichen und das Browserfenster breiter und schmaler ziehen. Zwei Dinge müssen stimmen: Das Tempo darf sich dabei nicht ändern, und an der Stelle, an der die Wiederholung neu ansetzt, darf nichts springen oder blitzen. Steht das Band still, hat der Track keinen Inhalt oder der Wrapper keine begrenzte Breite — beides schreibt die Konsole hin.

OptionalBrauchst du nur, wenn du es brauchst. Aufklappen
OptionalRichtung, Tempo und Anhalten bei HoverStandard: nach links, 60 px/s

Ohne Angabe läuft das Band nach links mit 60 Pixeln pro Sekunde und hält nicht an. Alle drei Werte gehören auf den Wrapper. Für „up“ und „down“ braucht der Wrapper eine begrenzte Höhe — sonst wächst er mit dem Inhalt mit und es gibt nichts zu verdecken.

Auf den Wrapper

AttributWertStandardBeschreibung
leftIn welche Richtung das Band wandert. Bei „up“ und „down“ wird die Höhe gemessen statt der Breite. Ein unbekannter Wert fällt auf „left“ zurück und schreibt eine Warnung in die Konsole.
60Tempo in Pixeln pro Sekunde. Weil die Dauer aus der gemessenen Länge berechnet wird, bleibt dieses Tempo auf jeder Bildschirmbreite dasselbe. Werte ohne Zahl oder kleiner als eins fallen auf 60 zurück.
falseHält das Band an, solange die Maus darüber steht oder etwas darin den Tastaturfokus hat. Nur genau „true“ schaltet ein.
OptionalEin Knopf zum Anhaltenfür die Barrierefreiheit

Bewegung, die länger als fünf Sekunden läuft und automatisch startet, braucht laut WCAG 2.2.2 eine Möglichkeit, sie anzuhalten. Genau dafür ist dieses Element. Es setzt selbst aria-pressed und schaltet bei jedem Klick um. Wichtig: Der Knopf gehört in den Wrapper oder daneben — niemals in den Track, sonst wird er mitkopiert.

Auf den Knopf

AttributWertBeschreibung
Macht das Element zum Umschalter. Liegt es im Wrapper, findet es sein Laufband von selbst. Gibt es auf der Seite nur ein einziges Laufband, darf es auch außerhalb stehen.
Nur nötig, wenn der Knopf außerhalb des Wrappers steht und es mehrere Laufbänder gibt: Wrapper und Knopf tragen dieselbe Nummer und gehören damit zusammen.
OptionalWeiche Ränder, Abstand und Ziehenalles optional

Diese vier verändern nichts am Grundprinzip, sondern nur, wie sich das Band anfühlt. Alle gehören auf den Wrapper.

Auf den Wrapper

AttributWertStandardBeschreibung
ausBlendet die Ränder weich aus, damit die Elemente nicht hart abgeschnitten wirken. „true“ nimmt 48 Pixel, eine Zahl setzt die Breite selbst.
0Zusätzlicher Abstand in Pixeln zwischen zwei Wiederholungen — kommt zu einem Gap, den der Track im Designer schon hat, noch obendrauf.
falseMacht das Band mit Maus oder Finger greifbar. Ein Wurf rollt aus und blendet zurück in das eingestellte Tempo. Klicks auf Links darin bleiben Klicks, solange der Finger unter fünf Pixeln bleibt.
falseSchreibt beim Start eine Zeile in die Browser-Konsole: gemessene Länge, berechnete Dauer und wie viele Kopien angelegt wurden.
Mehr Möglichkeiten

Zusätzliche Features

Wer weniger Bewegung eingestellt hat, bekommt keine
Steht im Betriebssystem „Bewegung reduzieren“, steht das Band still — rein über CSS, ohne Umweg. Der Inhalt bricht dann normal um und wird nicht abgeschnitten, bleibt also vollständig lesbar.
Ändert sich die Breite, wird neu gemessen
Wrapper und Track werden beobachtet. Wird das Fenster gezogen, laden Bilder nach oder ändert ein Breakpoint das Layout, entstehen die nötigen Kopien nach und die Dauer wird neu berechnet.
Deine Interaktionen bleiben heil
Die Original-Elemente werden verschoben, nicht geklont — Webflow-Interaktionen daran laufen weiter. Nur die Kopien sind Klone, und die sind für Screenreader ausgeblendet und aus der Tab-Reihenfolge genommen.
Eigener Code kann andocken
Über das gemeinsame Dach meldet sich die Lösung an, sobald sie läuft. Anmelden lässt sich auch vorher — der Rückruf kommt trotzdem.