这是一款JS和CSS发光波浪文字动画效果。该文字动画特效使用CSS来制作文字的波浪起伏效果和发光效果,非常炫酷。
使用方法
HTML代码
<div class="container">
<div id="shimmerWave">Generating summary...</div>
</div>
CSS代码
.container {
height: 50vh;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: #000;
-webkit-text-size-adjust: 100%;
-moz-text-size-adjust: 100%;
text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
text-rendering: optimizelegibility;
-webkit-text-size-adjust: none;
-moz-text-size-adjust: none;
text-size-adjust: none;
}
#shimmerWave {
color: #46afc8;
font-size: 32px;
font-family: "Open-Sans", sans-serif;
font-weight: 600;
perspective: 80px;
transform-style: preserve-3d;
}
#shimmerWave span {
position: relative;
transition: all 0.3s ease;
display: inline-block;
-webkit-animation: wave 2.4s ease infinite;
animation: wave 2.4s ease infinite;
letter-spacing: 0.01em;
transform-origin: 100% 50%;
transform-style: preserve-3d;
}
#shimmerWave span:nth-child(1) {
-webkit-animation-delay: 0s;
animation-delay: 0s;
}
#shimmerWave span:nth-child(2) {
-webkit-animation-delay: 0.05s;
animation-delay: 0.05s;
}
#shimmerWave span:nth-child(3) {
-webkit-animation-delay: 0.1s;
animation-delay: 0.1s;
}
#shimmerWave span:nth-child(4) {
-webkit-animation-delay: 0.15s;
animation-delay: 0.15s;
}
#shimmerWave span:nth-child(5) {
-webkit-animation-delay: 0.2s;
animation-delay: 0.2s;
}
#shimmerWave span:nth-child(6) {
-webkit-animation-delay: 0.25s;
animation-delay: 0.25s;
}
#shimmerWave span:nth-child(7) {
-webkit-animation-delay: 0.3s;
animation-delay: 0.3s;
}
#shimmerWave span:nth-child(8) {
-webkit-animation-delay: 0.35s;
animation-delay: 0.35s;
}
#shimmerWave span:nth-child(9) {
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
#shimmerWave span:nth-child(10) {
-webkit-animation-delay: 0.45s;
animation-delay: 0.45s;
}
#shimmerWave span:nth-child(11) {
-webkit-animation-delay: 0.5s;
animation-delay: 0.5s;
}
#shimmerWave span:nth-child(12) {
-webkit-animation-delay: 0.55s;
animation-delay: 0.55s;
}
#shimmerWave span:nth-child(13) {
-webkit-animation-delay: 0.6s;
animation-delay: 0.6s;
}
#shimmerWave span:nth-child(14) {
-webkit-animation-delay: 0.65s;
animation-delay: 0.65s;
}
#shimmerWave span:nth-child(15) {
-webkit-animation-delay: 0.7s;
animation-delay: 0.7s;
}
#shimmerWave span:nth-child(16) {
-webkit-animation-delay: 0.75s;
animation-delay: 0.75s;
}
#shimmerWave span:nth-child(17) {
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
#shimmerWave span:nth-child(18) {
-webkit-animation-delay: 0.85s;
animation-delay: 0.85s;
}
#shimmerWave span:nth-child(19) {
-webkit-animation-delay: 0.9s;
animation-delay: 0.9s;
}
#shimmerWave span:nth-child(20) {
-webkit-animation-delay: 0.95s;
animation-delay: 0.95s;
}
#shimmerWave span:nth-child(21) {
-webkit-animation-delay: 1s;
animation-delay: 1s;
}
@-webkit-keyframes wave {
0% {
transform: translate3D(0, 0, 0) scale(1) rotateY(0);
color: #46afc8;
text-shadow: 0 0 0 rgba(70, 175, 200, 0);
}
12% {
transform: translate3D(2px, -2px, 2px) scale(1.16) rotateY(6deg);
color: white;
}
15% {
text-shadow: 0 0 2px #bce2eb;
}
24% {
transform: translate3D(0, 0, 0) scale(1) rotateY(0);
color: #6dc0d4;
opacity: 1;
}
36% {
transform: translate3D(0, 0, 0) scale(1);
}
100% {
transform: scale(1);
opacity: 0.8;
}
}
@keyframes wave {
0% {
transform: translate3D(0, 0, 0) scale(1) rotateY(0);
color: #46afc8;
text-shadow: 0 0 0 rgba(70, 175, 200, 0);
}
12% {
transform: translate3D(2px, -2px, 2px) scale(1.16) rotateY(6deg);
color: white;
}
15% {
text-shadow: 0 0 2px #bce2eb;
}
24% {
transform: translate3D(0, 0, 0) scale(1) rotateY(0);
color: #6dc0d4;
opacity: 1;
}
36% {
transform: translate3D(0, 0, 0) scale(1);
}
100% {
transform: scale(1);
opacity: 0.8;
}
}
JS代码
const target = document.getElementById('shimmerWave');
function splitTextToSpans(targetElement) {
if (targetElement) {
const text = targetElement.textContent;
targetElement.innerHTML = '';
for (let character of text) {
const span = document.createElement('span');
if (character === ' ') {
span.innerHTML = ' ';
} else {
span.textContent = character;
}
targetElement.appendChild(span);
}
}
}
splitTextToSpans(target);
codepen网址:https://codepen.io/avstorm/pen/XWGodYr