在这个项目中,我们实现了一个具有3D水波纹效果的文字动画。当用户hover文字时,会触发水波纹扩散效果,同时文字本身具有漂浮动画和模糊效果,营造出梦幻的水中文字效果。
首先,我们需要创建基本的HTML结构:
<div class="text-container">
<div class="text" data-text="水波纹">水波纹div>
<div class="water-effect">
<div class="water-ripple">div>
div>
div>
使用CSS的linear-gradient创建渐变背景,增加视觉效果:
background: linear-gradient(45deg, #12c2e9, #c471ed, #f64f59);
.text {
font-size: 5rem;
font-weight: bold;
color: rgba(255, 255, 255, 0.8);
text-transform: uppercase;
letter-spacing: 0.2em;
position: relative;
animation: float 6s ease-in-out infinite;
}
使用@keyframes实现文字的上下漂浮效果:
@keyframes float {
0%, 100% {
transform: translateY(0) rotateX(0deg);
}
50% {
transform: translateY(-20px) rotateX(5deg);
}
}
使用伪元素和filter属性创建水波纹的模糊效果:
.text::before {
content: attr(data-text);
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
color: rgba(255, 255, 255, 0.5);
filter: blur(12px);
animation: water-effect 3s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
定义水波效果的动画:
@keyframes water-effect {
0%, 100% {
transform: translateY(0) skewX(0deg) scale(1);
filter: blur(12px) brightness(1);
}
25% {
transform: translateY(-15px) skewX(-4deg) scale(1.05);
filter: blur(16px) brightness(1.3);
}
75% {
transform: translateY(15px) skewX(4deg) scale(0.95);
filter: blur(18px) brightness(0.7);
}
}
当用户hover文字时触发水波纹扩散动画:
.water-ripple {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 200%;
height: 200%;
background: radial-gradient(circle at center, rgba(255,255,255,0.2) 0%, transparent 80%);
opacity: 0;
mix-blend-mode: overlay;
}
@keyframes ripple {
0% {
transform: translate(-50%, -50%) scale(0.3);
opacity: 0.8;
}
100% {
transform: translate(-50%, -50%) scale(2);
opacity: 0;
}
}
水波纹效果的真实感
文字模糊效果的性能
动画流畅度
这个项目展示了如何使用纯CSS实现复杂的视觉效果。通过合理运用CSS3的新特性,我们可以创建出既美观又性能优良的动画效果。项目中的技术点和解决方案对于其他类似的动画效果实现也具有参考价值。