About this set
Three arrows built with newer CSS that used to need SVG or JavaScript, each with a fallback. The curved arrow is cut from a gradient box with clip-path: shape(), which accepts curves, so the tail bends smoothly; browsers without shape() get a straight-edged polygon of the same outline through @supports. The @property links register two custom properties. –shaft is a length that grows on hover or focus and drives both the shaft and the head of a line arrow at once, which an unregistered property cannot animate. –angle rotates a conic gradient border around a roadmap link while it is hovered or focused. The scroll-driven reader is a scrollable article preview with a chevron cue that fades out over the first 120 pixels of scrolling and a back-to-top link that fades in further down, using animation-timeline: scroll(nearest block). That replaces the usual scroll listener. Where scroll-driven animation is not supported, the cue and the back-to-top link simply stay visible. The scroll box can be focused and scrolled with the keyboard, and the back-to-top link is hidden with visibility while it is transparent, so it is never focusable unseen.
What’s included
- Curved arrow cut with clip-path: shape(), polygon fallback
- Registered --shaft length drives the shaft and head together
- Conic gradient ring rotated through a registered --angle
- Scroll-driven cue that fades out and back-to-top link that fades in
- Every modern feature sits behind @supports or degrades to a static arrow
Accessibility
The scroll region is focusable with tabindex="0", named by aria-label and shows a focus outline. The back-to-top link uses visibility as well as opacity, so it cannot receive focus while invisible. Arrows are aria-hidden and links are named by their text. Under prefers-reduced-motion the hover animations are off and the scroll-driven fades no longer move, only change opacity.
Customise it
Change --accent and --sky for the gradients, the hover value of --shaft for how far the arrow grows, and animation-range on .cue and .up for when they fade. In Tailwind these live in the curved, grow-arrow, spin-ring, scroll-cue and scroll-up utilities.






