Learn how to create a smooth, natural hand wave animation using pure CSS. This tutorial includes a waving hand emoji, a pointing hand button with a click effect, and a fully responsive design — all without any JavaScript! Customize the animation speed, colors, and emojis to fit your style
HTML & CSS Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Hand Wave Animation</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background: #f0f0f0;
font-family: Arial, sans-serif;
}
.container {
text-align: center;
}
.hand-wave {
display: inline-block;
font-size: 5rem;
animation: wave 1.5s infinite;
transform-origin: 70% 70%;
margin-bottom: 2rem;
}
@keyframes wave {
0% { transform: rotate(0deg); }
10% { transform: rotate(14deg); }
20% { transform: rotate(-8deg); }
30% { transform: rotate(14deg); }
40% { transform: rotate(-4deg); }
50% { transform: rotate(10deg); }
60% { transform: rotate(0deg); }
100% { transform: rotate(0deg); }
}
.btn {
position: relative;
padding: 12px 24px;
font-size: 1.2rem;
background: #4CAF50;
color: white;
border: none;
border-radius: 50px;
cursor: pointer;
overflow: hidden;
}
.btn .point-hand {
position: absolute;
right: -20px;
animation: point 1s infinite alternate ease-in-out;
}
@keyframes point {
from { transform: translateX(0); }
to { transform: translateX(10px); }
}
.btn:active .point-hand {
animation: press 0.3s ease;
}
@keyframes press {
0% { transform: translateX(10px) scale(1); }
50% { transform: translateX(10px) scale(0.8); }
100% { transform: translateX(10px) scale(1); }
}
</style>
</head>
<body>
<div class="container">
<div class="hand-wave">👋</div>
<h1>Hello There!</h1>
<button class="btn">
Click Me
<span class="point-hand">👉</span>
</button>
</div>
</body>
</html>
Features Included:
- Waving Hand (👋) - Smooth natural wave animation
- Pointing Hand Button - With "click me" CTA that:
- Points toward the button (👉)
- Squishes slightly when clicked
- Responsive Design - Works on all screen sizes
- Pure CSS - No JavaScript required
How to Customize:
- Change hand emojis (try ✋, 🖐️, or 🤚)
- Adjust animation speed by changing
1.5s/1sdurations - Modify colors in the
.btnclass - Make the wave bigger by increasing
font-sizein.hand-wave
Want me to modify anything (like adding a dragging hand or more complex SVG animation)? Let me know! ✨
