Letras con efecto TikTok con puro CSS

TikTok

En este artículo te mostraré un efecto genial de letras hecho con CSS puro, basado en el estilo del logo de TikTok. ¡Vamos a darle un toque único a tus títulos!

Diseño del Contenedor

Primero, creamos un contenedor .tiktok_container que ocupa todo el ancho de la pantalla. Usamos flexbox para centrar el contenido en ambos ejes y le damos un fondo negro para que el texto destaque:

.tiktok_container {
    width: 100%;
    display: flex;
    background-color: #000;
    justify-content: center;
    align-items: center;
}

Estilo del Texto

Para el texto, usamos la fuente Varela Round de Google Fonts. El tamaño es de 140px, con un espaciado de 5px entre letras, centrado y en mayúsculas. El color es un negro suave para un acabado elegante:

h1.tiktok_h1 {
    color: hsla(0, 0%, 0%, .9);
    font: normal 140px Varela Round, sans-serif;
    letter-spacing: 5px;
    text-align: center;
    text-transform: uppercase;
    margin: 0px;
    animation: tiktok_move linear 2000ms infinite;  
}

Animación de Sombras

La parte divertida: la animación tiktok_move. Crea un movimiento continuo de sombras de colores alrededor del texto, alternando entre rojas y azules. ¡Le da un efecto súper dinámico!

@keyframes tiktok_move {
0% {
       text-shadow:
           4px -4px 0 hsla(0, 100%, 50%, 1), 
           3px -3px 0 hsla(0, 100%, 50%, 1), 
           2px -2px 0 hsla(0, 100%, 50%, 1), 
           1px -1px 0 hsla(0, 100%, 50%, 1),
           -4px 4px 0 hsla(180, 100%, 50%, 1), 
           -3px 3px 0 hsla(180, 100%, 50%, 1), 
           -2px 2px 0 hsla(180, 100%, 50%, 1), 
           -1px 1px 0 hsla(180, 100%, 50%, 1)
        ;
    }
    25% {    
        text-shadow:      
            -4px -4px 0 hsla(180, 100%, 50%, 1), 
            -3px -3px 0 hsla(180, 100%, 50%, 1), 
            -2px -2px 0 hsla(180, 100%, 50%, 1), 
            -1px -1px 0 hsla(180, 100%, 50%, 1),
            4px 4px 0 hsla(0, 100%, 50%, 1), 
            3px 3px 0 hsla(0, 100%, 50%, 1), 
            2px 2px 0 hsla(0, 100%, 50%, 1), 
            1px 1px 0 hsla(0, 100%, 50%, 1)      
        ;
    }
    50% {
        text-shadow:
            -4px 4px 0 hsla(0, 100%, 50%, 1), 
            -3px 3px 0 hsla(0, 100%, 50%, 1), 
            -2px 2px 0 hsla(0, 100%, 50%, 1), 
            -1px 1px 0 hsla(0, 100%, 50%, 1),
            4px -4px 0 hsla(180, 100%, 50%, 1), 
            3px -3px 0 hsla(180, 100%, 50%, 1), 
            2px -2px 0 hsla(180, 100%, 50%, 1), 
            1px -1px 0 hsla(180, 100%, 50%, 1)
        ;
    }
    75% {
        text-shadow:
            4px 4px 0 hsla(180, 100%, 50%, 1), 
            3px 3px 0 hsla(180, 100%, 50%, 1), 
            2px 2px 0 hsla(180, 100%, 50%, 1), 
            1px 1px 0 hsla(180, 100%, 50%, 1),
            -4px -4px 0 hsla(0, 100%, 50%, 1), 
            -3px -3px 0 hsla(0, 100%, 50%, 1), 
            -2px -2px 0 hsla(0, 100%, 50%, 1), 
            -1px -1px 0 hsla(0, 100%, 50%, 1)      
        ;
    }
    100% {
        text-shadow:
            4px -4px 0 hsla(0, 100%, 50%, 1), 
            3px -3px 0 hsla(0, 100%, 50%, 1), 
            2px -2px 0 hsla(0, 100%, 50%, 1), 
            1px -1px 0 hsla(0, 100%, 50%, 1),
            -4px 4px 0 hsla(180, 100%, 50%, 1), 
            -3px 3px 0 hsla(180, 100%, 50%, 1), 
            -2px 2px 0 hsla(180, 100%, 50%, 1), 
            -1px 1px 0 hsla(180, 100%, 50%, 1)
        ;
    }  
}

Implementación

Para ver este efecto en acción, solo necesitas pegar el CSS en el <style> de tu HTML y usar el siguiente código para mostrar el título:

.tiktok_container {
    width: 100%;
    display: flex;
    background-color: #000;
    justify-content: center;
    align-items: center;
}
h1.tiktok_h1 {
    color: hsla(0, 0%, 0%, .9);
    font: normal 140px Varela Round, sans-serif;
    letter-spacing: 5px;
    text-align: center;
    text-transform: uppercase;
    margin: 0px;
    animation: tiktok_move linear 2000ms infinite;  
}
@keyframes tiktok_move {
    0% {
        text-shadow:
            4px -4px 0 hsla(0, 100%, 50%, 1), 
            3px -3px 0 hsla(0, 100%, 50%, 1), 
            2px -2px 0 hsla(0, 100%, 50%, 1), 
            1px -1px 0 hsla(0, 100%, 50%, 1),
            -4px 4px 0 hsla(180, 100%, 50%, 1), 
            -3px 3px 0 hsla(180, 100%, 50%, 1), 
            -2px 2px 0 hsla(180, 100%, 50%, 1), 
            -1px 1px 0 hsla(180, 100%, 50%, 1)
        ;
    }
    25% {    
        text-shadow:      
            -4px -4px 0 hsla(180, 100%, 50%, 1), 
            -3px -3px 0 hsla(180, 100%, 50%, 1), 
            -2px -2px 0 hsla(180, 100%, 50%, 1), 
            -1px -1px 0 hsla(180, 100%, 50%, 1),
            4px 4px 0 hsla(0, 100%, 50%, 1), 
            3px 3px 0 hsla(0, 100%, 50%, 1), 
            2px 2px 0 hsla(0, 100%, 50%, 1), 
            1px 1px 0 hsla(0, 100%, 50%, 1)      
        ;
    }
    50% {
        text-shadow:
            -4px 4px 0 hsla(0, 100%, 50%, 1), 
            -3px 3px 0 hsla(0, 100%, 50%, 1), 
            -2px 2px 0 hsla(0, 100%, 50%, 1), 
            -1px 1px 0 hsla(0, 100%, 50%, 1),
            4px -4px 0 hsla(180, 100%, 50%, 1), 
            3px -3px 0 hsla(180, 100%, 50%, 1), 
            2px -2px 0 hsla(180, 100%, 50%, 1), 
            1px -1px 0 hsla(180, 100%, 50%, 1)
        ;
    }
    75% {
        text-shadow:
            4px 4px 0 hsla(180, 100%, 50%, 1), 
            3px 3px 0 hsla(180, 100%, 50%, 1), 
            2px 2px 0 hsla(180, 100%, 50%, 1), 
            1px 1px 0 hsla(180, 100%, 50%, 1),
            -4px -4px 0 hsla(0, 100%, 50%, 1), 
            -3px -3px 0 hsla(0, 100%, 50%, 1), 
            -2px -2px 0 hsla(0, 100%, 50%, 1), 
            -1px -1px 0 hsla(0, 100%, 50%, 1)      
        ;
    }
    100% {
        text-shadow:
            4px -4px 0 hsla(0, 100%, 50%, 1), 
            3px -3px 0 hsla(0, 100%, 50%, 1), 
            2px -2px 0 hsla(0, 100%, 50%, 1), 
            1px -1px 0 hsla(0, 100%, 50%, 1),
            -4px 4px 0 hsla(180, 100%, 50%, 1), 
            -3px 3px 0 hsla(180, 100%, 50%, 1), 
            -2px 2px 0 hsla(180, 100%, 50%, 1), 
            -1px 1px 0 hsla(180, 100%, 50%, 1)
        ;
    }  
  }
}
<div class="tiktok_container">
    <h1 class="tiktok_h1">TikTok</h1>
</div>

¡Y listo! Con este código CSS, tus títulos tendrán un efecto visual espectacular, capturando la esencia vibrante de TikTok. ¡Anímate a probarlo y sorprende a todos!

Compartir esta información