Skip to the content

Arc marquee

A line of text runs without end along a wide arc, the edge of a circle much larger than the screen: a dome over what follows, or a bowl under it.

Become a member to unlock the full effect today.

Join now

Already a member? Sign in

Documentation

  1. Copy to Webflow

    Add Instrument Sans and Geist Mono to your site's fonts (Site settings, Fonts, Google Fonts) before pasting: Webflow removes any font your site has not installed.

  2. Add custom CSS

    The type of the arc is the type of the element: set its font, size, weight, tracking and colour on its class. Its height follows from the arc, so give it none. While the scroll bends the arc deeper, a dome reaches below its box and a bowl above it: leave some air there, or set flex to 0.
  3. Add custom JS

  4. Use it on your own elements

    Custom attributes
    Select the element on the canvas and open the Settings panel. Under Custom attributes, add a pair: the name on the left, the value on the right.
    Custom attributeWhat it does
    data-arc-marquee Goes on the heading or the paragraph whose words run along the arc, and takes no value: leave the value field empty. That element becomes the box of the arc, as wide as it is and as tall as the arc needs, and its font, size, weight and colour are the arc's. The settings below go on the same element.
    data-arc-marquee-item Marks one phrase inside that element, and takes no value. The engine draws the separator mark between two phrases. Without any item, the whole text of the element is one phrase. [ Optional ]
    data-arc-marquee-source Written by the engine on the span that keeps the words as written, hidden from sight only so a screen reader reads them once. Never written by hand; destroy() gives the words back. [ Optional ]
    data-arc-marquee-svg Written by the engine on the drawing it adds inside the element, hidden from screen readers. Never written by hand. [ Optional ]
    data-arc-marquee-state Written by the engine on the element: running, paused while it is off screen, still under reduced motion or when there is nothing to draw. Never written by hand, and a page can style on it. [ Optional ]
    Settings
    Every setting is a custom attribute too, added the same way and on the same element. An attribute always wins over the defaults written in the code.
    AttributeDefaultWhat it is
    data-arc-marquee-accent currentColor The colour of the mark between two phrases. Options: any CSS colour; currentColor takes the colour of the text.
    data-arc-marquee-mode auto What moves the words. Options: auto (they run on their own and the scroll speeds them up), scroll (they move with the page only, and stand still when it does).
    data-arc-marquee-direction left Which way the words run along the arc. Options: left, right.
    data-arc-marquee-speed 70 How fast the words run on their own, in pixels a second, in auto mode.
    data-arc-marquee-boost 1 How much of the scroll is handed to the words, as a factor. In scroll mode, the pixels of travel for each pixel scrolled.
    data-arc-marquee-max-speed 2000 The ceiling, in pixels a second; also the speed at which the arc reaches its full extra bend.
    data-arc-marquee-ease 0.1 How quickly the words and the bend take up the scroll, 0 to 1.
    data-arc-marquee-bend 0.12 The rise of the arc at rest, as a share of the width of the element: how much higher its middle stands than its two ends. Negative turns the dome into a bowl.
    data-arc-marquee-flex 1.2 How much deeper the arc bends at top speed, in times its resting bend.
    data-arc-marquee-reverse true Whether scrolling up sends the words back the other way, in auto mode. Options: false (the page only ever pushes them forward), true.
    data-arc-marquee-separator ✦ The mark drawn between two phrases, any text. Options: one character like ✦, ◆ or /, a word, or empty for no mark.
    data-arc-marquee-gap 0.45 The space on either side of the mark, in ems of the text.

What it does

Arc marquee is a text animation for Webflow and vanilla JavaScript, with no library. Also called curved text marquee, text on a path animation or arc text scroll animation.

A line of text runs without end along a wide arc, the edge of a circle much larger than the screen: a dome over what follows, or a bowl under it. On its own it cruises at a steady speed and the scroll throws it faster, or back the other way when the reader scrolls up; in scroll mode it moves with the page only, like a scrubbed timeline. In both modes the arc bends deeper while the scroll pulls and settles back when it stops. The words are written once and stay real text: the engine keeps them as written for screen readers, which read them once, and draws them along an SVG path as many times as the arc needs, with the kerning and the tracking of the page. The repeat is seamless and measured from the page itself, nothing runs off screen, and under reduced motion the arc stands still. Pattern type curved marquee, text on a path, arc text ticker, scroll velocity text.

Updated

Questions

Select a heading or a paragraph that spans the full width of the page, open the Settings panel and add the custom attribute data-arc-marquee with an empty value. Wrap each phrase in a span marked data-arc-marquee-item to get a mark between them; the engine draws the words along an arc as wide as the element and repeats them as often as the arc needs.

Yes: set data-arc-marquee-mode="scroll" and the words move with the page only, by boost pixels for each pixel scrolled, and go back when you scroll back. The default, auto, runs on its own at speed pixels a second, 70 by default, and the scroll throws it faster or, with reverse on, back the other way.

Give data-arc-marquee-bend a negative value. The bend is the rise of the middle of the arc as a share of the element's width, 0.12 by default: positive is a dome with the letters on its outer side, negative a bowl with the letters standing inside it, and 0 a straight line.

That is flex: at top speed the arc reaches 1 + flex times its resting bend, 2.2 times with the default of 1.2, and settles back when the scroll stops. Set data-arc-marquee-flex="0" to keep the arc as it is, or a negative value to flatten it while the page moves.

No. The words as written stay in the element, hidden from sight only, and are read once; the drawing of the arc, with its repeated copies, is hidden from screen readers. A heading marked with data-arc-marquee stays a heading with its own text, and the arc stands still when the reader asks for reduced motion.