LayerwiseLayerwise
  • Features
  • Pricing
  • Templates
  • Docs
DownloadDownload
FeaturesPricingTemplatesDocsAI Website BuilderVibe CodingPersonal Software
DownloadDownload
  1. Glossary
  2. /
  3. Loops & ambient motion

Marquee

Also called infinite marquee, logo ticker, or scrolling logos

A strip of logos or text that scrolls sideways in an endless loop, often used for "trusted by" rows and announcements.

import { useRef } from 'react';
import {
  motion,
  useAnimationFrame,
  useMotionValue,
  useReducedMotion
} from 'motion/react';

const SPEED = 40; // px per second, steady and linear

type Logo = { name: string; src: string };

export function LogoMarquee({ logos }: { logos: Logo[] }) {
  const track = useRef<HTMLDivElement>(null);
  const paused = useRef(false);
  const x = useMotionValue(0);
  const reduceMotion = useReducedMotion();

  useAnimationFrame((_, delta) => {
    if (reduceMotion || paused.current || !track.current) return;
    // Slide by exactly one copy, then wrap; the second copy hides the jump.
    const copyWidth = track.current.scrollWidth / 2;
    x.set((x.get() - (SPEED * delta) / 1000) % copyWidth);
  });

  return (
    <div
      onPointerEnter={() => (paused.current = true)}
      onPointerLeave={() => (paused.current = false)}
      className='overflow-hidden [mask-image:linear-gradient(to_right,transparent,black_15%,black_85%,transparent)]'
    >
      <motion.div ref={track} style={{ x }} className='flex w-max'>
        {[false, true].map((duplicate) => (
          // pr-12 matches gap-12, so both copies are exactly the same width.
          <ul
            key={String(duplicate)}
            aria-hidden={duplicate || undefined}
            className='flex shrink-0 items-center gap-12 pr-12'
          >
            {logos.map((logo) => (
              <li key={logo.name}>
                <img
                  src={logo.src}
                  alt={duplicate ? '' : logo.name}
                  className='h-7 w-auto opacity-60 grayscale'
                />
              </li>
            ))}
          </ul>
        ))}
      </motion.div>
    </div>
  );
}
Add a logo marquee under the hero: one row of 8 grayscale customer logos that scrolls left in an endless loop at about 40px per second with linear timing. Duplicate the row for a seamless loop, fade both edges with a mask over the outer 15%, pause on hover, hide the duplicate from screen readers, and show a still row when prefers-reduced-motion is set.

Paste into Layerwise or any AI coding tool.

What is Marquee?

A marquee moves a row of content, usually customer logos, testimonials, or short announcements, sideways at a steady speed. When the last item leaves, the first one is already coming back, so the strip never ends. The trick is two identical copies of the row side by side: the track slides left by exactly one copy, then jumps back to the start, and the jump is invisible because the second copy now sits where the first began.

Use it for social proof under a hero, a row of integrations, or a ticker of updates. Keep it slow, around 30 to 60px per second, with linear timing so it never speeds up or stalls. A soft fade at both edges, made with mask-image, hides where items enter and leave.

Pause it on hover so people can read an item, and stop it under prefers-reduced-motion. Hide the duplicate copy from screen readers with aria-hidden so the list is read once. The old HTML <marquee> tag is obsolete; build it with CSS.

Often confused with

Carousel
A carousel shows one slide at a time and moves when the user or a timer advances it. A marquee scrolls continuously on its own.

Related terms

All terms

Carousel

A row of slides shown one at a time and moved with arrows, dots, swipes, or a timer, to fit several images or cards in one spot.

Looping animation

An animation that plays more than once, either a set number of times or forever, set in CSS with animation-iteration-count.

Linear easing

Easing that moves at one constant speed from start to finish, with no speeding up or slowing down, drawn as a straight line on a graph.

Mask

A CSS technique that uses an image or gradient to set how visible each part of an element is, often used to fade edges softly.

Build it with Layerwise

Describe your app, watch it run in a live preview, and publish it with a database, storage, and sign-in built in.

DownloadDownloadRead the docs
LayerwiseLayerwise

Build full-stack web apps in minutes with AI.

Product

  • Features
  • Pricing
  • Download
  • Templates

Solutions

  • AI Website Builder
  • Vibe Coding
  • Personal Software

Resources

  • Documentation
  • Changelog
  • Blog
  • Vibe Coding Glossary
  • llms.txt
  • llms-full.txt

Company

  • About
  • Contact

Legal

  • Privacy
  • Analytics Privacy
  • Terms
  • Security
  • Abuse

© 2026 Layerwise. All rights reserved.

Entrances & exits

  • Fade in
  • Slide in
  • Scale in
  • Pop in
  • Blur in
  • Reveal animation
  • Enter and exit animations

Timing & sequencing

  • Duration
  • Delay
  • Keyframes
  • Tweening
  • Stagger
  • Orchestration
  • Fill mode
  • Stepped animation
  • Looping animation
  • Yoyo animation

Easing

  • Easing
  • Linear easing
  • Ease-in
  • Ease-out
  • Ease-in-out
  • Cubic-bezier
  • Asymmetric easing
  • Overshoot easing

Springs & physics

  • Spring animation
  • Stiffness
  • Damping
  • Mass
  • Bounce
  • Velocity
  • Momentum
  • Interruptible animation
  • Rubber-banding

Transforms

  • Translate
  • Scale
  • Rotate
  • Skew
  • 3D flip
  • Perspective
  • Transform origin
  • Origin-aware animation

State transitions

  • Crossfade
  • Morph
  • Shared element transition
  • Layout animation
  • Height auto animation
  • Direction-aware transition
  • Continuity transition
  • Page transition
  • View Transitions API

Scroll effects

  • Scroll reveal
  • Scroll-driven animation
  • Parallax scrolling
  • Scrollytelling
  • Scroll pinning
  • Horizontal scroll section
  • Scroll progress bar
  • Scroll snap
  • Smooth scrolling

Interaction feedback

  • Hover effect
  • Press feedback
  • Ripple effect
  • Shake animation
  • Hold to confirm
  • Drag gesture
  • Drag to reorder
  • Swipe to dismiss
  • Pull to refresh
  • Magnetic button
  • Custom cursor
  • 3D tilt card
  • Spotlight card

Text effects

  • Typewriter effect
  • Text scramble
  • Split text animation
  • Text morph
  • Rotating words
  • Gradient text
  • Shimmer text
  • Number ticker
  • Tabular numbers
  • Underline animation

Loops & ambient motion

  • Marquee
  • Pulse animation
  • Float animation
  • Orbit animation
  • Idle animation
  • Particle background
  • Border beam
  • Confetti
  • Animated gradient

Visual effects

  • Blur
  • Clip-path
  • Mask
  • Before/after slider
  • SVG line drawing
  • Lottie animation

Motion principles

  • Purposeful animation
  • Anticipation
  • Follow-through
  • Squash and stretch
  • Perceived performance
  • Frequency of use
  • Spatial consistency
  • Reduced motion

Animation performance

  • Frame rate (FPS)
  • Jank
  • GPU acceleration
  • will-change
  • Layout thrashing

Layout

  • Hero section
  • Above the fold
  • Sticky header
  • Sidebar
  • Bento grid
  • Card
  • Flexbox
  • CSS Grid
  • Padding vs margin
  • Responsive design
  • Container
  • Masonry layout
  • Split screen
  • Z-index
  • Overflow

Components

  • Button variants
  • Modal
  • Drawer
  • Popover
  • Tooltip
  • Dropdown menu
  • Context menu
  • Toast notification
  • Tabs
  • Segmented control
  • Accordion
  • Carousel
  • Command palette
  • Combobox
  • Toggle switch
  • Checkbox
  • Radio button
  • Date picker
  • Breadcrumb
  • Pagination
  • Infinite scroll
  • Badge
  • Avatar stack
  • Empty state
  • Skeleton screen
  • Spinner
  • Progress bar
  • Data table
  • Stepper
  • Floating label
  • Inline validation
  • Alert banner
  • Tag input

States & patterns

  • Interaction states
  • Focus ring
  • Loading state
  • Optimistic UI
  • Debounce
  • Lazy loading
  • Dark mode
  • Micro-interaction
  • Affordance
  • Undo
  • Drag and drop
  • Keyboard shortcut

Visual styles

  • Glassmorphism
  • Liquid glass
  • Neumorphism
  • Claymorphism
  • Neo-brutalism
  • Skeuomorphism
  • Flat design
  • Mesh gradient
  • Aurora background
  • Grain texture
  • Glow effect
  • Drop shadow
  • Border radius
  • Grid background
  • Typographic hierarchy
  • Accent color
  • Color contrast

Vibe coding & AI

  • Vibe coding
  • Prompt
  • Context window
  • Token
  • AI agent
  • Tool call
  • Hallucination
  • Diff
  • Live preview
  • Checkpoint
  • Git commit
  • Deploy
  • Frontend and backend
  • API
  • Database
  • Rules file
  • MCP
  • Plan mode
  • Visual edit

Trusted by teams at

  • Arcwell
  • Bramble
  • Cindera
  • Driftly
  • Everpine
  • Arcwell
  • Bramble
  • Cindera
  • Driftly
  • Everpine
  • Fennick
  • Glasswing
  • Hollowmere
  • Juniper & Co
  • Kestrel
  • Fennick
  • Glasswing
  • Hollowmere
  • Juniper & Co
  • Kestrel