Sliced Type

Entrance & Kinetic · Animated · pure CSS

A word cut clean along a tunable diagonal line: two data-text halves, each clipped to its side of the seam, fly apart on entrance, hold a beat, then settle back — but not quite flush, leaving a crisp hairline gap as the permanent signature. No RGB tints, no jitter, just a katana-sharp reveal.

Sliced Type

How it works

Sliced Type is an animated entrance & kinetic text effect rendered entirely in CSS. A data-text attribute mirrors the word into ::before/::after layers, so copy that attribute together with the CSS.

Controls

Sliced Type exposes 3 dedicated controls — Slice Angle, Gap and Speed — 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

/* Sliced Type — made with TEXT-FX · https://text-fx.app
 * HTML: the element needs a data-text attribute equal to its text.
 * Font: 'Bricolage Grotesque', sans-serif (load from Google Fonts).
 */

.text-effect {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  letter-spacing: -1px;
  text-transform: none;
}

.text-effect {
  position: relative;
  display: inline-block;
  color: transparent;
}
.text-effect::before,
.text-effect::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  color: #f4f4f4;
  pointer-events: none;
  will-change: transform;
}
.text-effect::before {
  clip-path: polygon(0% 0%, 100% 0%, 100% 50%, 0% 50%);
  animation: text-effect-top 0.77s cubic-bezier(.22,1,.36,1) 1 both;
}
.text-effect::after {
  clip-path: polygon(0% 50%, 100% 50%, 100% 100%, 0% 100%);
  animation: text-effect-bot 0.77s cubic-bezier(.22,1,.36,1) 1 both;
}
.text-effect:hover::before {
  animation-name: text-effect-top-r;
}
.text-effect:hover::after {
  animation-name: text-effect-bot-r;
}

@keyframes text-effect-top {
  0%, 40% { transform: translate(0px, -14px); }
  100% { transform: translate(0px, -2.3px); }
}
@keyframes text-effect-bot {
  0%, 40% { transform: translate(0px, 14px); }
  100% { transform: translate(0px, 2.3px); }
}
@keyframes text-effect-top-r {
  0%, 40% { transform: translate(0px, -14px); }
  100% { transform: translate(0px, -2.3px); }
}
@keyframes text-effect-bot-r {
  0%, 40% { transform: translate(0px, 14px); }
  100% { transform: translate(0px, 2.3px); }
}

HTML

This effect needs the markup below (per-letter spans, SVG defs, or a data-text attribute).

<!-- Made with TEXT-FX · https://text-fx.app -->

<style>
.text-effect {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  letter-spacing: -1px;
  text-transform: none;
}

.text-effect {
  position: relative;
  display: inline-block;
  color: transparent;
}
.text-effect::before,
.text-effect::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  color: #f4f4f4;
  pointer-events: none;
  will-change: transform;
}
.text-effect::before {
  clip-path: polygon(0% 0%, 100% 0%, 100% 50%, 0% 50%);
  animation: text-effect-top 0.77s cubic-bezier(.22,1,.36,1) 1 both;
}
.text-effect::after {
  clip-path: polygon(0% 50%, 100% 50%, 100% 100%, 0% 100%);
  animation: text-effect-bot 0.77s cubic-bezier(.22,1,.36,1) 1 both;
}
.text-effect:hover::before {
  animation-name: text-effect-top-r;
}
.text-effect:hover::after {
  animation-name: text-effect-bot-r;
}

@keyframes text-effect-top {
  0%, 40% { transform: translate(0px, -14px); }
  100% { transform: translate(0px, -2.3px); }
}
@keyframes text-effect-bot {
  0%, 40% { transform: translate(0px, 14px); }
  100% { transform: translate(0px, 2.3px); }
}
@keyframes text-effect-top-r {
  0%, 40% { transform: translate(0px, -14px); }
  100% { transform: translate(0px, -2.3px); }
}
@keyframes text-effect-bot-r {
  0%, 40% { transform: translate(0px, 14px); }
  100% { transform: translate(0px, 2.3px); }
}
</style>

<div data-text="Your text" class="text-effect">Your text</div>
Category
Entrance & Kinetic
Type
Animated
Browser support
All modern browsers
Capabilities
dataText

Related Entrance & Kinetic effects