How to double layered text effect using css?

In this post, we will show you how to double layered text effect using CSS.

1. Code:

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8" />
    <meta name="viewport" content=
        "width=device-width, initial-scale=1.0" />
    <title>Double Layered Text</title>
        body {
            background: black;
        .geeks {
            text-align: center;
            margin: 200px auto 0;
            font-family: Arial, Helvetica, sans-serif;
        .geeks span {
            font-size: 80px;
            font-weight: 700;
            color: green;
            position: relative;
            text-shadow: -1px 0 0 rgba(0, 0, 0, .2);
        .geeks span::before {
            content: attr(data-title);
            position: absolute;
            top: 0;
            left: 0;
            transform-origin: left;
            color: #fff;
            transition: .5s cubic-bezier(
                0.175, 0.885, 0.32, 1.275);
            transform: rotateY(25deg);
        .geeks span:hover::before {
            transform: perspective(1000px) rotate(-67deg);
    <div class="geeks">
        <span data-title="W">W</span>
        <span data-title="E">E</span>
        <span data-title="L">L</span>
        <span data-title="C">C</span>
        <span data-title="O">O</span>
        <span data-title="M">M</span>
        <span data-title="E">E</span>
        <span data-title="T">T</span>
        <span data-title="O">O</span>
        <span data-title="S">S</span>
        <span data-title="O">O</span>
        <span data-title="L">L</span>
        <span data-title="T">T</span>
        <span data-title="U">U</span>
        <span data-title="T">T</span>
        <span data-title="S">S</span>

2. Approach:

The approach is to first create two layers using the before selector and then use hover selector to rotate it on mouse hover.

HTML Code: In this section, we have wrapped each alphabet in a span with a data-title attribute having the same value as of the alphabet.

CSS Code:

  • Step 1: Perform some basic styling like a background, font-family, font-size and adjusting text to center.
  • Step 2: Now use before selector with the content set as the data-title used in the span tag. This will create the second layer of the text. Make sure to provide a different color from the color given to the first layer.
  • Step 3: Now use some transitions to give smooth animation.
  • Step 4: At last, use hover selector to change perspective or in simple words rotate the second layer.

Note: Choose your degree rotation and values for transitions carefully. You can use the browser console to get the perfect values.

Complete Code: It is the combination of the above two sections of the code.