这是一款纯CSS炫酷文字故障动画效果,该特效利用多层文字的动画效果,来模拟电子设备故障时的文字横条闪烁效果,非常炫酷。
使用方法
HTML代码
<div class="glitch"> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> <div class="line"><i class="fa-solid fa-triangle-exclamation fa-beat"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> <div class="line"><i class="fa-solid fa-shapes"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation fa-beat"></i></div> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR</div> <div class="line"><i class="fa-solid fa-triangle-exclamation fa-shake"></i> FATAL ERROR</div> <div class="line"><i class="fa-solid fa-triangle-exclamation"></i> FATAL ERROR <i class="fa-solid fa-triangle-exclamation"></i></div> </div>
CSS代码
.glitch { position: relative; color: #fff; font-size: 60px; } .line:not(:first-child) { position: absolute; top: 0; left: 0; } .line:nth-child(1) { animation: clip 3000ms -300ms linear infinite, glitch1 500ms -420ms linear infinite; } @keyframes glitch1 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(0px); color: #4e9a26; } 90% { transform: translateX(5px); color: #ac1212; } 95% { transform: translateX(1px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(2) { animation: clip 3000ms -600ms linear infinite, glitch2 500ms -543ms linear infinite; } @keyframes glitch2 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(-3px); color: #4e9a26; } 90% { transform: translateX(-4px); color: #ac1212; } 95% { transform: translateX(5px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(3) { animation: clip 3000ms -900ms linear infinite, glitch3 500ms -460ms linear infinite; } @keyframes glitch3 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(4px); color: #4e9a26; } 90% { transform: translateX(-2px); color: #ac1212; } 95% { transform: translateX(4px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(4) { animation: clip 3000ms -1200ms linear infinite, glitch4 500ms -618ms linear infinite; } @keyframes glitch4 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(-4px); color: #4e9a26; } 90% { transform: translateX(4px); color: #ac1212; } 95% { transform: translateX(1px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(5) { animation: clip 3000ms -1500ms linear infinite, glitch5 500ms -279ms linear infinite; } @keyframes glitch5 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(-2px); color: #4e9a26; } 90% { transform: translateX(-4px); color: #ac1212; } 95% { transform: translateX(-1px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(6) { animation: clip 3000ms -1800ms linear infinite, glitch6 500ms -607ms linear infinite; } @keyframes glitch6 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(2px); color: #4e9a26; } 90% { transform: translateX(-2px); color: #ac1212; } 95% { transform: translateX(-3px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(7) { animation: clip 3000ms -2100ms linear infinite, glitch7 500ms -45ms linear infinite; } @keyframes glitch7 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(-2px); color: #4e9a26; } 90% { transform: translateX(-1px); color: #ac1212; } 95% { transform: translateX(0px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(8) { animation: clip 3000ms -2400ms linear infinite, glitch8 500ms -823ms linear infinite; } @keyframes glitch8 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(1px); color: #4e9a26; } 90% { transform: translateX(1px); color: #ac1212; } 95% { transform: translateX(2px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(9) { animation: clip 3000ms -2700ms linear infinite, glitch9 500ms -575ms linear infinite; } @keyframes glitch9 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(3px); color: #4e9a26; } 90% { transform: translateX(0px); color: #ac1212; } 95% { transform: translateX(1px); color: #fff; } 100% { transform: translateX(0); } } .line:nth-child(10) { animation: clip 3000ms -3000ms linear infinite, glitch10 500ms -377ms linear infinite; } @keyframes glitch10 { 0% { transform: translateX(0); } 80% { transform: translateX(0); color: #fff; } 85% { transform: translateX(-2px); color: #4e9a26; } 90% { transform: translateX(3px); color: #ac1212; } 95% { transform: translateX(-1px); color: #fff; } 100% { transform: translateX(0); } } @keyframes clip { 0% { clip-path: polygon(0 -20%, 100% -20%, 100% 0%, 0 0); } 100% { clip-path: polygon(0 100%, 100% 100%, 100% 120%, 0 120%); } }
codepen网址:https://codepen.io/tommyho/pen/GRLrVjR