@gfazioli/mantine-marquee
A Mantine component that allows you to create a marquee effect with a list of elements.
Installation
After installation import package styles at the root of your application:
You can import styles within a layer @layer mantine-marquee by importing @gfazioli/mantine-marquee/styles.layer.css file.
Usage
The Marquee component allows you to create a marquee effect with any content.
Fade edges
The fadeEdges prop adds a smooth fade effect at the edges of the scroll area using CSS mask-image.
It accepts true, "linear", "ellipse", or "rect" — passing true is equivalent to "linear".
Use fadeEdgesSize to control how much of the edge is faded ("xs" | "sm" | "md" | "lg" | "xl" or a percentage string).
Linear
fadeEdges="linear" applies a gradient mask on the leading and trailing scroll edges.
This works for both horizontal and vertical layouts, and it is ideal for content that enters and exits from the sides.
Ellipse
fadeEdges="ellipse" applies a radial elliptical mask that fades all around the border.
This is orientation-independent — it works identically for horizontal and vertical marquees.
It is particularly effective for logo carousels, icon showcases, or any content where a vignette effect is desired.
Circle
Since the ellipse mask uses radial-gradient(ellipse closest-side), applying fadeEdges="ellipse" to a square element
(w and h are equal) produces a perfectly circular mask. No additional prop is needed — the geometry does the work.
John Doe
Jane Doe
Jessica Doe
Jack Doe
Jill Doe
John Doe
Jane Doe
Jessica Doe
Jack Doe
Jill Doe
Rect
fadeEdges="rect" uses two intersected linear gradients (mask-composite: intersect) to fade all 4 edges independently.
The horizontal gradient controls left/right, the vertical gradient controls top/bottom — at the corners the alpha values multiply naturally, creating a smooth diagonal falloff.
fadeEdgesSize accepts a [horizontal, vertical] tuple for independent axis control.
For example fadeEdgesSize={['lg', 'xs']} applies a large fade on left/right and a small fade on top/bottom.
Multiple
The Marquee component allows you to create a marquee effect with multiple items.
Vertical
The Marquee component allows you to create a marquee effect with multiple items in vertical direction.
Isometric variant
Set variant="isometric" to lay the marquee on a plane tilted back in 3D space — content scrolls
across a surface, as if the items were resting on a table. The existing scroll loop is reused
unchanged, so every other prop (reverse, duration, pauseOnHover, gap, vertical) keeps working.
Use tilt to control the plane inclination in degrees and perspective to control the depth in
pixels (smaller values exaggerate the effect). Add rotate (in-plane rotateZ) and skew
(horizontal skewX) to dial in a classic ¾ isometric (2.5D) look. The 3D scene is composited as a
flat image on the root element, so fadeEdges masks still apply on top of the tilted plane — the
linear fade automatically follows the projected scroll axis, so it keeps fading the leading and
trailing items even when the plane is rotated.
Circle variant
Set variant="circle" to distribute the children around a 3D ellipse ring that rotates
continuously, like a carousel. Each child is positioned once around the ring (no clones) and the
whole ring spins — rotateY(360deg) equals rotateY(0deg), so the loop is perfectly seamless.
The items are mounted on the rim facing outward, so the ring reads as a 3D carousel/cylinder. Use
radius to size the ring (a single number for a circular ring, or a [rx, ry] tuple for an
explicit ellipse), tilt for the viewing angle (positive views the ring from above, negative from
below), and perspective for the depth. reverse, duration and pauseOnHover work as usual;
repeat, gap and vertical do not apply to a ring.
The circle variant needs a height — set h (or mih) on the component.
Responsive vertical
The vertical prop accepts a responsive breakpoint object in addition to a plain boolean.
This lets you switch between vertical and horizontal layouts at different viewport widths
using Mantine's useMatches hook under the hood.
Responsive gap
The gap prop also accepts a responsive breakpoint object.
This is useful when switching layout direction at a breakpoint — you can pair it with a different gap size.
Drop-in for Mantine core Marquee
This component is a superset of the built-in @mantine/core Marquee — existing snippets keep working
after changing the import path, with a few notes:
orientation="horizontal" | "vertical"is accepted as an alias ofvertical.fadeEdgeSizeis accepted as an alias offadeEdgesSize(singular spelling).fadeEdgeColoris accepted but ignored — fade edges use CSS masks (true alpha, background-independent), so no fade color is required.durationis expressed in seconds here, while@mantine/coremeasures it in milliseconds: coreduration={100000}corresponds toduration={100}.
On top of that you get responsive gap and vertical, fade-edge shapes (linear, ellipse, rect), per-axis fade sizes, and the isometric and circle 3D variants.
Example: Testimonials
Your customers feedback is important to you. Use Marquee to display your testimonials.
John Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jane Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jessica Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jack Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jill Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
John Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jane Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jessica Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jack Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Jill Doe
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Example: Branding
One of the most common use cases for Marquee is to create branding banners.
Example: Isometric tech stack
The isometric variant turns a plain logo strip into a 3D "tech stack on a desk" hero — perfect for
landing pages, integrations sections, or a tools showcase.
React
TypeScript
Next.js
Mantine
Vercel
Tailwind
Figma
GitHub
React
TypeScript
Next.js
Mantine
Vercel
Tailwind
Figma
GitHub
Example: Circle avatar ring
The circle variant arranges items around a rotating 3D ring — a carousel for team avatars,
community members, or a brand showcase. A slightly negative tilt views the ring from just below;
hover to pause and click an avatar.