
Animasi teks CSS sering jadi elemen kecil yang punya dampak besar. Dengan sentuhan yang tepat, tampilan website bisa terasa lebih hidup, interaktif, dan profesional. Nah, di artikel ini kamu akan belajar cara membuat animasi teks CSS otomatis yang simpel, praktis, dan langsung bisa kamu terapkan tanpa ribet.
Pertama, animasi teks bisa langsung menarik perhatian pengunjung. Ketika user membuka halaman, mereka cenderung fokus pada elemen yang bergerak. Karena itu, animasi sering dipakai di bagian penting seperti headline atau CTA.
Selain itu, animasi juga membantu meningkatkan pengalaman pengguna (UX). Website jadi terasa lebih dinamis, tidak kaku, dan lebih nyaman dilihat. Bahkan, dengan penggunaan yang tepat, kamu bisa memberikan kesan modern tanpa perlu desain yang terlalu kompleks.
Biasanya, animasi teks cocok digunakan di:
Namun, tetap gunakan secukupnya agar tidak mengganggu kenyamanan pengguna.
Sebelum masuk ke contoh, kamu perlu memahami dasar-dasarnya dulu. Pada dasarnya, animasi CSS menggunakan kombinasi properti seperti @keyframes dan animation.
Dengan @keyframes, kamu bisa menentukan perubahan dari awal sampai akhir animasi. Sementara itu, properti animation berfungsi untuk menjalankan animasi tersebut secara otomatis.
Sebagai contoh sederhana:
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.text {
animation: fadeIn 2s ease-in-out infinite;
}Dengan kode ini, teks akan muncul secara perlahan dan terus berulang. Jadi, kamu tidak perlu JavaScript sama sekali.
Codingan Lengkapnya (HTML & CSS), Versi Premium (Dengan Multi Text + Smooth Loop)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Typing Animation Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #0f172a;
font-family: 'Poppins', sans-serif;
color: #fff;
}
.typing-container {
font-size: 2rem;
font-weight: 600;
}
.typing-text {
color: #38bdf8;
}
.cursor {
display: inline-block;
width: 3px;
background: #38bdf8;
margin-left: 5px;
animation: blink 0.8s infinite;
}
@keyframes blink {
0%, 50%, 100% { opacity: 1; }
25%, 75% { opacity: 0; }
}
</style>
</head>
<body>
<div class="typing-container">
<span class="typing-text"></span>
<span class="cursor"></span>
</div>
<script>
const texts = [
"Website Lebih Hidup",
"UI Lebih Modern",
"Tampilan Lebih Menarik",
"User Experience Meningkat"
];
let index = 0;
let charIndex = 0;
let isDeleting = false;
const typingElement = document.querySelector(".typing-text");
function typeEffect() {
let currentText = texts[index];
if (isDeleting) {
typingElement.textContent = currentText.substring(0, charIndex--);
} else {
typingElement.textContent = currentText.substring(0, charIndex++);
}
let speed = isDeleting ? 50 : 100;
if (!isDeleting && charIndex === currentText.length) {
speed = 1500;
isDeleting = true;
} else if (isDeleting && charIndex === 0) {
isDeleting = false;
index = (index + 1) % texts.length;
speed = 500;
}
setTimeout(typeEffect, speed);
}
typeEffect();
</script>
</body>
</html>Efek ini membuat teks seolah-olah sedang diketik. Biasanya dipakai di headline agar terasa lebih menarik.
Codingan Lengkapnya (HTML & CSS), Full Code – Fade In Text Premium (Stagger Effect)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Fade In Text Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #0f172a;
font-family: 'Poppins', sans-serif;
}
.fade-container {
text-align: center;
color: #fff;
font-size: 2.2rem;
font-weight: 600;
line-height: 1.5;
}
.fade-container span {
display: inline-block;
opacity: 0;
transform: translateY(20px);
animation: fadeUp 0.8s ease forwards;
}
/* Stagger delay per kata */
.fade-container span:nth-child(1) { animation-delay: 0.2s; }
.fade-container span:nth-child(2) { animation-delay: 0.4s; }
.fade-container span:nth-child(3) { animation-delay: 0.6s; }
.fade-container span:nth-child(4) { animation-delay: 0.8s; }
.fade-container span:nth-child(5) { animation-delay: 1s; }
.fade-container span:nth-child(6) { animation-delay: 1.2s; }
@keyframes fadeUp {
to {
opacity: 1;
transform: translateY(0);
}
}
/* Optional: highlight warna */
.highlight {
color: #38bdf8;
}
/* Responsive */
@media (max-width: 600px) {
.fade-container {
font-size: 1.5rem;
}
}
</style>
</head>
<body>
<div class="fade-container">
<span>Bikin</span>
<span class="highlight">Website</span>
<span>Kamu</span>
<span>Lebih</span>
<span>Hidup</span>
<span>✨</span>
</div>
</body>
</html>Animasi ini sederhana, tetapi tetap elegan. Teks muncul secara halus dan cocok untuk berbagai jenis website.
Codingan Lengkapnya (HTML & CSS), Full Code – Slide Text Premium (Stagger + Multi Direction)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Slide Text Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #0f172a;
font-family: 'Poppins', sans-serif;
color: #fff;
}
.slide-container {
text-align: center;
font-size: 2.2rem;
font-weight: 600;
overflow: hidden;
}
.slide-container span {
display: inline-block;
opacity: 0;
}
/* === Animasi Variasi === */
/* Slide dari kiri */
.left {
transform: translateX(-60px);
animation: slideLeft 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
/* Slide dari kanan */
.right {
transform: translateX(60px);
animation: slideRight 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
/* Slide dari bawah */
.up {
transform: translateY(60px);
animation: slideUp 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
/* Keyframes */
@keyframes slideLeft {
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideRight {
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideUp {
to {
opacity: 1;
transform: translateY(0);
}
}
/* Stagger delay */
.slide-container span:nth-child(1) { animation-delay: 0.2s; }
.slide-container span:nth-child(2) { animation-delay: 0.4s; }
.slide-container span:nth-child(3) { animation-delay: 0.6s; }
.slide-container span:nth-child(4) { animation-delay: 0.8s; }
.slide-container span:nth-child(5) { animation-delay: 1s; }
/* Highlight */
.highlight {
color: #38bdf8;
}
/* Responsive */
@media (max-width: 600px) {
.slide-container {
font-size: 1.5rem;
}
}
</style>
</head>
<body>
<div class="slide-container">
<span class="left">Tampilan</span>
<span class="right highlight">Website</span>
<span class="up">Lebih</span>
<span class="left">Modern</span>
<span class="right">🔥</span>
</div>
</body>
</html>Teks masuk dari samping atau atas. Karena itu, efek ini sering dipakai untuk memperkenalkan konten.
Codingan Lengkapnya (HTML & CSS), Full Code – Glowing Text Premium (Neon + Pulse Effect)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Glowing Text Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #020617;
font-family: 'Poppins', sans-serif;
}
.glow-container {
text-align: center;
}
.glow-text {
font-size: 3rem;
font-weight: 700;
color: #38bdf8;
letter-spacing: 2px;
/* Glow layer */
text-shadow:
0 0 5px #38bdf8,
0 0 10px #38bdf8,
0 0 20px #38bdf8,
0 0 40px #0ea5e9,
0 0 80px #0ea5e9;
animation: glowPulse 2.5s ease-in-out infinite alternate;
}
@keyframes glowPulse {
0% {
text-shadow:
0 0 4px #38bdf8,
0 0 8px #38bdf8,
0 0 15px #38bdf8,
0 0 25px #0ea5e9,
0 0 50px #0ea5e9;
}
100% {
text-shadow:
0 0 6px #7dd3fc,
0 0 12px #7dd3fc,
0 0 25px #38bdf8,
0 0 50px #0ea5e9,
0 0 100px #0284c7;
}
}
/* Optional subtitle */
.subtitle {
margin-top: 10px;
color: #94a3b8;
font-size: 1rem;
letter-spacing: 1px;
}
/* Responsive */
@media (max-width: 600px) {
.glow-text {
font-size: 2rem;
}
}
</style>
</head>
<body>
<div class="glow-container">
<div class="glow-text">DIGITAL EXPERIENCE</div>
<div class="subtitle">Lebih Hidup dengan Animasi CSS</div>
</div>
</body>
</html>Efek ini memberikan kesan futuristik. Biasanya cocok untuk tema teknologi atau digital.
Codingan Lengkapnya (HTML & CSS), Full Code – Text Bounce Premium (Stagger + Realistic Motion)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Text Bounce Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #020617;
font-family: 'Poppins', sans-serif;
}
.bounce-container {
font-size: 3rem;
font-weight: 700;
color: #38bdf8;
display: flex;
gap: 5px;
}
.bounce-container span {
display: inline-block;
animation: bounce 1.2s cubic-bezier(0.28, 0.84, 0.42, 1) infinite;
}
/* Stagger delay per huruf */
.bounce-container span:nth-child(1) { animation-delay: 0s; }
.bounce-container span:nth-child(2) { animation-delay: 0.1s; }
.bounce-container span:nth-child(3) { animation-delay: 0.2s; }
.bounce-container span:nth-child(4) { animation-delay: 0.3s; }
.bounce-container span:nth-child(5) { animation-delay: 0.4s; }
.bounce-container span:nth-child(6) { animation-delay: 0.5s; }
.bounce-container span:nth-child(7) { animation-delay: 0.6s; }
@keyframes bounce {
0%, 100% {
transform: translateY(0);
text-shadow: 0 0 0 rgba(0,0,0,0);
}
30% {
transform: translateY(-25px);
text-shadow: 0 10px 15px rgba(0,0,0,0.3);
}
50% {
transform: translateY(0);
text-shadow: 0 5px 10px rgba(0,0,0,0.2);
}
70% {
transform: translateY(-10px);
text-shadow: 0 8px 12px rgba(0,0,0,0.25);
}
}
/* Optional highlight */
.highlight {
color: #7dd3fc;
}
/* Responsive */
@media (max-width: 600px) {
.bounce-container {
font-size: 2rem;
}
}
</style>
</head>
<body>
<div class="bounce-container">
<span>B</span>
<span class="highlight">O</span>
<span>U</span>
<span>N</span>
<span>C</span>
<span>E</span>
<span>!</span>
</div>
</body>
</html>Animasi ini lebih playful. Oleh karena itu, cocok untuk website yang santai atau kreatif.
Codingan Lengkapnya (HTML & CSS), Full Code – Rotating Text Premium (Fade + Slide Smooth)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Rotating Text Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #020617;
font-family: 'Poppins', sans-serif;
color: #fff;
}
.rotate-container {
font-size: 2.5rem;
font-weight: 600;
text-align: center;
}
.static-text {
margin-right: 10px;
color: #94a3b8;
}
.dynamic-text {
display: inline-block;
position: relative;
height: 1em;
overflow: hidden;
vertical-align: bottom;
}
.dynamic-text span {
position: absolute;
width: 100%;
opacity: 0;
transform: translateY(100%);
animation: rotateText 12s infinite;
}
/* Delay tiap teks */
.dynamic-text span:nth-child(1) { animation-delay: 0s; }
.dynamic-text span:nth-child(2) { animation-delay: 3s; }
.dynamic-text span:nth-child(3) { animation-delay: 6s; }
.dynamic-text span:nth-child(4) { animation-delay: 9s; }
@keyframes rotateText {
0% {
opacity: 0;
transform: translateY(100%);
}
10% {
opacity: 1;
transform: translateY(0);
}
30% {
opacity: 1;
transform: translateY(0);
}
40% {
opacity: 0;
transform: translateY(-100%);
}
100% {
opacity: 0;
}
}
.highlight {
color: #38bdf8;
}
/* Responsive */
@media (max-width: 600px) {
.rotate-container {
font-size: 1.6rem;
}
}
</style>
</head>
<body>
<div class="rotate-container">
<span class="static-text">Bikin Website</span>
<span class="dynamic-text">
<span class="highlight">Lebih Hidup</span>
<span class="highlight">Lebih Modern</span>
<span class="highlight">Lebih Menarik</span>
<span class="highlight">Lebih Profesional</span>
</span>
</div>
</body>
</html>Dengan efek ini, kamu bisa menampilkan beberapa kata secara bergantian. Jadi, lebih hemat ruang dan tetap informatif.
Codingan Lengkapnya (HTML & CSS), Full Code – Infinite Loop Text Premium (Seamless + Smooth)
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Infinite Loop Text Premium</title>
<style>
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #020617;
font-family: 'Poppins', sans-serif;
}
.loop-wrapper {
width: 100%;
overflow: hidden;
background: #0f172a;
padding: 20px 0;
border-top: 1px solid rgba(255,255,255,0.1);
border-bottom: 1px solid rgba(255,255,255,0.1);
}
.loop-track {
display: flex;
width: max-content;
animation: scroll 20s linear infinite;
}
/* Pause saat hover */
.loop-wrapper:hover .loop-track {
animation-play-state: paused;
}
.loop-item {
font-size: 1.8rem;
font-weight: 600;
color: #38bdf8;
margin: 0 40px;
white-space: nowrap;
}
/* Efek gradient fade di pinggir */
.loop-wrapper::before,
.loop-wrapper::after {
content: "";
position: absolute;
top: 0;
width: 100px;
height: 100%;
z-index: 2;
}
.loop-wrapper::before {
left: 0;
background: linear-gradient(to right, #020617, transparent);
}
.loop-wrapper::after {
right: 0;
background: linear-gradient(to left, #020617, transparent);
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
/* Responsive */
@media (max-width: 600px) {
.loop-item {
font-size: 1.2rem;
margin: 0 20px;
}
}
</style>
</head>
<body>
<div class="loop-wrapper">
<div class="loop-track">
<!-- LIST 1 -->
<div class="loop-item">🚀 Animasi CSS</div>
<div class="loop-item">🔥 UI Modern</div>
<div class="loop-item">💡 Website Interaktif</div>
<div class="loop-item">⚡ Loading Cepat</div>
<div class="loop-item">🎯 UX Lebih Baik</div>
<!-- DUPLIKASI (WAJIB biar seamless) -->
<div class="loop-item">🚀 Animasi CSS</div>
<div class="loop-item">🔥 UI Modern</div>
<div class="loop-item">💡 Website Interaktif</div>
<div class="loop-item">⚡ Loading Cepat</div>
<div class="loop-item">🎯 UX Lebih Baik</div>
</div>
</div>
</body>
</html>Animasi berjalan terus tanpa berhenti. Biasanya digunakan untuk elemen dekoratif atau penekanan visual.
Walaupun terlihat sederhana, banyak yang masih melakukan kesalahan. Misalnya, menggunakan animasi terlalu banyak dalam satu halaman. Akibatnya, website justru terasa berat dan membingungkan.
Selain itu, durasi animasi sering tidak diperhatikan. Ada yang terlalu cepat, ada juga yang terlalu lambat. Padahal, kenyamanan pengguna harus tetap jadi prioritas.
Supaya hasilnya lebih optimal, ada beberapa hal yang bisa kamu terapkan.
Pertama, gunakan animasi seperlunya. Fokus pada bagian penting saja agar tidak berlebihan. Selain itu, pilih durasi yang nyaman dilihat, biasanya antara 1–3 detik.
Kemudian, pastikan animasi tetap ringan. Hindari efek yang terlalu kompleks agar performa website tetap stabil. Terakhir, jangan lupa optimasi untuk tampilan mobile, karena banyak user mengakses dari smartphone.
Animasi teks CSS sering digunakan di berbagai jenis website. Misalnya, pada landing page produk digital untuk menarik perhatian. Selain itu, portfolio juga sering memanfaatkan animasi untuk menampilkan skill atau pengalaman.
Bahkan, blog artikel pun bisa menggunakannya untuk menyorot poin penting agar lebih mudah dipahami pembaca.
Secara keseluruhan, animasi teks CSS adalah solusi sederhana untuk membuat tampilan website lebih hidup. Dengan memahami cara membuat animasi teks CSS, kamu bisa meningkatkan kualitas visual tanpa perlu coding yang rumit.
Jadi, mulai sekarang, kamu bisa langsung mencoba beberapa efek di atas dan sesuaikan dengan kebutuhan website kamu.
Tidak signifikan, selama kamu tidak menggunakannya secara berlebihan.
Ya, semua animasi di atas bisa berjalan otomatis hanya dengan CSS.
Cocok untuk landing page, portfolio, hingga blog agar tampil lebih menarik.
Untuk referensi lebih lanjut, kamu bisa mempelajari dokumentasi resmi CSS animation di Mozilla Developer Network.
Selain itu, kamu juga bisa melihat berbagai contoh animasi langsung di CodePen atau menggunakan library siap pakai seperti Animate.css untuk hasil yang lebih cepat.
Naikin Traffic Website Tanpa Ribet Nulis Sendiri bisa langsung ke :