Iris Wipe
Entrance & Kinetic · Animated · pure CSS
A silent-film iris-in: the word snaps into view behind a hard-edged circular clip-path aperture — zero gradient, zero blur — while a thin mechanical bezel ring expands in lockstep just outside the opening edge and fades once the shot is fully open. An optional off-center iris reveals from a corner like a projectionist's cue; hover closes the iris and reopens it.
How it works
Iris Wipe is an animated entrance & kinetic text effect rendered entirely in CSS. It works on a single element — just add the .text-effect class, with no extra HTML.
Controls
Iris Wipe exposes 5 dedicated controls — Ring Hue, Open Speed, Ring Thickness, Iris Center and Hold Closed — on top of the shared type controls (font, weight, letter-spacing and case). Open it in the generator to tune every value live, then copy the updated CSS.
CSS
/* Iris Wipe — made with TEXT-FX · https://text-fx.app
* HTML: just put the class on any element.
* Font: 'Space Grotesk', sans-serif (load from Google Fonts).
*/
.text-effect {
font-family: 'Space Grotesk', sans-serif;
font-weight: 700;
letter-spacing: 0px;
text-transform: uppercase;
}
.text-effect {
position: relative;
display: inline-block;
color: hsl(0 0% 96%);
}
.text-effect .fx-iris-text {
display: inline-block;
clip-path: circle(0% at 50% 50%);
animation: text-effect-clip 1.94s cubic-bezier(.32,.94,.2,1) both;
}
.text-effect::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
aspect-ratio: 1 / 1;
width: 3%;
border: 0.054em solid hsl(44 68% 74% / 0.7);
border-radius: 50%;
box-sizing: border-box;
transform: translate(-50%, -50%);
opacity: .85;
pointer-events: none;
animation: text-effect-ring 1.94s cubic-bezier(.32,.94,.2,1) both;
}
.text-effect:hover .fx-iris-text {
animation-name: text-effect-clip-r;
}
.text-effect:hover::after {
animation-name: text-effect-ring-r;
}
@keyframes text-effect-clip {
0% { clip-path: circle(0% at 50% 50%); }
11.86% { clip-path: circle(0% at 50% 50%); }
100% { clip-path: circle(150% at 50% 50%); }
}
@keyframes text-effect-ring {
0% { width: 3%; opacity: .85; }
11.86% { width: 3%; opacity: .85; }
80% { width: 132%; opacity: 1; }
100% { width: 172%; opacity: 0; }
}
@keyframes text-effect-clip-r {
0% { clip-path: circle(0% at 50% 50%); }
11.86% { clip-path: circle(0% at 50% 50%); }
100% { clip-path: circle(150% at 50% 50%); }
}
@keyframes text-effect-ring-r {
0% { width: 3%; opacity: .85; }
11.86% { width: 3%; opacity: .85; }
80% { width: 132%; opacity: 1; }
100% { width: 172%; opacity: 0; }
}
Pure CSS — just add the .text-effect class to any element.
- Category
- Entrance & Kinetic
- Type
- Animated
- Browser support
- clip-path: circle() hard-edge aperture reveal (all modern browsers)
- Capabilities
- pure