One
Native scrolling remains available. Hold the mouse button to preview the grabbing cursor.
A branded mouse cursor across the site, section-specific shapes, a pulsing ring, and animated hover glows. CSS only.
Move between these panels on a mouse device. Cursor shapes change as soon as you enter each section.
A cyan target with a precise center point.
A native crosshair cursor for precision interfaces.
The native text cursor. You can select this sample sentence.
A purple pointer shape. This panel is a cursor-style preview, not a clickable control.
<div class="sl-grid sl-md:cols-2 sl-gap-6">
<section class="sl-cursor-zone sl-stack sl-cursor-ring">
<h3 class="sl-text-xl">Branded ring</h3>
<p>A cyan target with a precise center point.</p>
</section>
<section class="sl-cursor-zone sl-stack sl-cursor-precision">
<h3 class="sl-text-xl">Precision area</h3>
<p>A native crosshair cursor for precision interfaces.</p>
</section>
<section class="sl-cursor-zone sl-stack sl-cursor-text">
<h3 class="sl-text-xl">Text area</h3>
<p>The native text cursor. You can select this sample sentence.</p>
</section>
<section class="sl-cursor-zone sl-stack sl-cursor-action">
<h3 class="sl-text-xl">Action appearance</h3>
<p>
A purple pointer shape. This panel is a cursor-style preview, not a clickable
control.
</p>
</section>
</div>The cursor ring cycles through three sizes and the panel glow transitions on entry and exit. Reduced motion keeps both static. Cursor images switch discretely; they do not interpolate.
The browser draws the cursor at the pointer position. No JavaScript tracking or hidden cursor is used.
<section class="sl-cursor-zone sl-stack sl-cursor-ring sl-cursor-pulse sl-cursor-glow">
<h3 class="sl-text-xl">Move your mouse into this section</h3>
<p>
The browser draws the cursor at the pointer position. No JavaScript tracking or
hidden cursor is used.
</p>
</section>The grab cursor accompanies native touchpad, scrollbar, touch and keyboard scrolling. Mouse-drag scrolling is not implemented by CSS.
<section class="sl-slider sl-slider--cards" aria-label="Cursor scroll examples">
<div
class="sl-slider__track sl-cursor-grab"
tabindex="0"
role="group"
aria-label="Use arrow keys or a touchpad to scroll"
>
<article class="sl-slide sl-stack">
<h3 class="sl-text-xl">One</h3>
<p>
Native scrolling remains available. Hold the mouse button to preview the
grabbing cursor.
</p>
</article>
<article class="sl-slide sl-stack">
<h3 class="sl-text-xl">Two</h3>
<p>
Native scrolling remains available. Hold the mouse button to preview the
grabbing cursor.
</p>
</article>
<article class="sl-slide sl-stack">
<h3 class="sl-text-xl">Three</h3>
<p>
Native scrolling remains available. Hold the mouse button to preview the
grabbing cursor.
</p>
</article>
</div>
</section>Apply sl-cursor-site sl-cursor-pulse to your body for the site-wide effect. Links and buttons use an action cursor; text fields and disabled controls keep meaningful native shapes.
Move over the background, this real link, and the controls below.
<section class="sl-cursor-site sl-cursor-pulse sl-cursor-zone sl-stack">
<h3 class="sl-text-xl">Try every state</h3>
<p>
Move over the background, this <a href="/light/components/">real link</a>, and the
controls below.
</p>
<label class="sl-field"
><span class="sl-label">Sample note</span
><input class="sl-input" placeholder="Native text cursor"
/></label>
<div><button type="button" class="sl-btn" disabled>Disabled example</button></div>
</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.