Testimonials
Quote cards, responsive grids, and swipeable testimonial sliders. Ready to compose with CSS only.
Featured testimonial card
An editorial quote with a clear attribution. All names and quotes on this page are fictional examples.
Sample testimonial
“The spacing and typography gave our prototype a clear rhythm from the very first screen.”
Maya Chen
Product designer · North Studio
View HTML / PlaygroundHTML source
<figure class="sl-card sl-stack sl-gap-6">
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The spacing and typography gave our prototype a clear rhythm from the very first
screen.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">MC</span>
<div>
<p><strong>Maya Chen</strong></p>
<p class="sl-help">Product designer · North Studio</p>
</div>
</figcaption>
</figure>Normal testimonial card grid
One column on phones, two from 768px, and three from 1024px. Optional motion adds a gentle hover lift.
Sample testimonial
“The spacing and typography gave our prototype a clear rhythm from the very first screen.”
Maya Chen
Product designer · North Studio
Sample testimonial
“I could compose a clean interface with familiar HTML and just the CSS modules I needed.”
Alex Morgan
Frontend developer · Fieldwork
Sample testimonial
“The same cards feel considered in both themes, with room for our own visual identity.”
Priya Shah
Creative lead · Paper & Form
View HTML / PlaygroundHTML source
<div class="sl-grid sl-md:cols-2 sl-lg:cols-3 sl-gap-6">
<figure class="sl-card sl-hover-lift sl-stack sl-gap-6">
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The spacing and typography gave our prototype a clear rhythm from the very
first screen.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">MC</span>
<div>
<p><strong>Maya Chen</strong></p>
<p class="sl-help">Product designer · North Studio</p>
</div>
</figcaption>
</figure>
<figure class="sl-card sl-hover-lift sl-stack sl-gap-6">
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“I could compose a clean interface with familiar HTML and just the CSS modules I
needed.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">AM</span>
<div>
<p><strong>Alex Morgan</strong></p>
<p class="sl-help">Frontend developer · Fieldwork</p>
</div>
</figcaption>
</figure>
<figure class="sl-card sl-hover-lift sl-stack sl-gap-6">
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The same cards feel considered in both themes, with room for our own visual
identity.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">PS</span>
<div>
<p><strong>Priya Shah</strong></p>
<p class="sl-help">Creative lead · Paper & Form</p>
</div>
</figcaption>
</figure>
</div>Testimonial slider
One quote per slide. Swipe, use the numbered links, or focus the track and use the arrow keys. There is no autoplay.
View HTML / PlaygroundHTML source
<section
class="sl-slider"
aria-label="Sample testimonials"
aria-roledescription="carousel"
>
<div
class="sl-slider__track"
tabindex="0"
role="group"
aria-label="Testimonial slides. Swipe or focus here and use arrow keys."
>
<figure
class="sl-slide sl-stack sl-gap-6"
id="testimonial-1"
tabindex="-1"
role="group"
aria-roledescription="slide"
aria-label="1 of 3"
>
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The spacing and typography gave our prototype a clear rhythm from the very
first screen.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">MC</span>
<div>
<p><strong>Maya Chen</strong></p>
<p class="sl-help">Product designer · North Studio</p>
</div>
</figcaption>
</figure>
<figure
class="sl-slide sl-stack sl-gap-6"
id="testimonial-2"
tabindex="-1"
role="group"
aria-roledescription="slide"
aria-label="2 of 3"
>
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“I could compose a clean interface with familiar HTML and just the CSS modules
I needed.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">AM</span>
<div>
<p><strong>Alex Morgan</strong></p>
<p class="sl-help">Frontend developer · Fieldwork</p>
</div>
</figcaption>
</figure>
<figure
class="sl-slide sl-stack sl-gap-6"
id="testimonial-3"
tabindex="-1"
role="group"
aria-roledescription="slide"
aria-label="3 of 3"
>
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The same cards feel considered in both themes, with room for our own visual
identity.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">PS</span>
<div>
<p><strong>Priya Shah</strong></p>
<p class="sl-help">Creative lead · Paper & Form</p>
</div>
</figcaption>
</figure>
</div>
<nav class="sl-slider__nav" aria-label="Choose a testimonial">
<a href="#testimonial-1" aria-label="Read sample testimonial from Maya Chen">1</a
><a href="#testimonial-2" aria-label="Read sample testimonial from Alex Morgan">2</a
><a href="#testimonial-3" aria-label="Read sample testimonial from Priya Shah">3</a>
</nav>
</section>Testimonial card rail
A horizontal card collection with a peek at the next card on mobile and two cards visible on larger screens.
View HTML / PlaygroundHTML source
<section
class="sl-slider sl-slider--cards"
aria-label="Sample testimonials"
aria-roledescription="carousel"
>
<div
class="sl-slider__track"
tabindex="0"
role="group"
aria-label="Testimonial slides. Swipe or focus here and use arrow keys."
>
<figure
class="sl-slide sl-stack sl-gap-6"
id="testimonial-rail-1"
tabindex="-1"
role="group"
aria-roledescription="slide"
aria-label="1 of 3"
>
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The spacing and typography gave our prototype a clear rhythm from the very
first screen.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">MC</span>
<div>
<p><strong>Maya Chen</strong></p>
<p class="sl-help">Product designer · North Studio</p>
</div>
</figcaption>
</figure>
<figure
class="sl-slide sl-stack sl-gap-6"
id="testimonial-rail-2"
tabindex="-1"
role="group"
aria-roledescription="slide"
aria-label="2 of 3"
>
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“I could compose a clean interface with familiar HTML and just the CSS modules
I needed.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">AM</span>
<div>
<p><strong>Alex Morgan</strong></p>
<p class="sl-help">Frontend developer · Fieldwork</p>
</div>
</figcaption>
</figure>
<figure
class="sl-slide sl-stack sl-gap-6"
id="testimonial-rail-3"
tabindex="-1"
role="group"
aria-roledescription="slide"
aria-label="3 of 3"
>
<p class="sl-help">Sample testimonial</p>
<blockquote>
<p>
“The same cards feel considered in both themes, with room for our own visual
identity.”
</p>
</blockquote>
<figcaption class="sl-cluster sl-gap-4">
<span class="sl-badge" aria-hidden="true">PS</span>
<div>
<p><strong>Priya Shah</strong></p>
<p class="sl-help">Creative lead · Paper & Form</p>
</div>
</figcaption>
</figure>
</div>
<nav class="sl-slider__nav" aria-label="Choose a testimonial">
<a href="#testimonial-rail-1" aria-label="Read sample testimonial from Maya Chen"
>1</a
><a href="#testimonial-rail-2" aria-label="Read sample testimonial from Alex Morgan"
>2</a
><a href="#testimonial-rail-3" aria-label="Read sample testimonial from Priya Shah"
>3</a
>
</nav>
</section>Classes beginning with sl- come from StyloftCSS. Examples with demo- classes also use our optional demo extension CSS ↓. Load it after the core to reproduce those details.