Marquee

An infinite scrolling component that handles content loops effortlessly.

Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.

Installation

1. Add Component

npx shadcn-vue@latest add https://raya-ui.com/registry/marquee.json

Or manually:

npm install clsx tailwind-merge

2. Update CSS

Add the following animations to your global CSS file (e.g., app/assets/css/main.css) within the @theme block (Tailwind v4).

@theme inline {
  --animate-marquee: marquee var(--duration) infinite linear;
  --animate-marquee-vertical: marquee-vertical var(--duration) linear infinite;

  @keyframes marquee {
    from {
      transform: translateX(0);
    }
    to {
      transform: translateX(calc(-100% - var(--gap)));
    }
  }

  @keyframes marquee-vertical {
    from {
      transform: translateY(0);
    }
    to {
      transform: translateY(calc(-100% - var(--gap)));
    }
  }
}

Examples

Vertical

Vertical scrolling useful for sidebars or mobile views.

Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.

3D Perspective

Using CSS transforms to create a 3D wall of marquees.

Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jack
Jack

@jack

I've never seen anything like this before. It's amazing. I love it.
Jill
Jill

@jill

I don't know what to say. I'm speechless. This is amazing.
John
John

@john

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.
Jane
Jane

@jane

I'm at a loss for words. This is amazing. I love it.
Jenny
Jenny

@jenny

I'm at a loss for words. This is amazing. I love it.
James
James

@james

I'm at a loss for words. This is amazing. I love it.

Props

PropTypeDefaultDescription
reversebooleanfalseReverses the animation direction.
pauseOnHoverbooleanfalsePauses the animation when the mouse hovers over the container.
verticalbooleanfalseChanges orientation to vertical.
repeatnumber4Number of times to duplicate the content for seamless looping.
classstring''Custom classes. Use [--duration:20s] or [--gap:1rem] here to customize.