CSS和JS都有各自獨特的效果,而其中一個著名的效果是文字彈幕。
/*CSS代碼*/
.barrage {
position: absolute;
top: 0;
left: 0;
font-size: 24px;
white-space: nowrap;
color: #fff;
text-shadow: 1px 1px 0 #333;
pointer-events: none;
z-index: 999999;
animation:barrageMove 10s linear infinite;
}
@keyframes barrageMove {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
這是一個基本的CSS彈幕代碼,主要利用了position來設置絕對定位,text-shadow實現文字陰影效果,并使用了animation實現移動動畫。
而JS實現文字彈幕的過程就需要通過添加元素與動畫,如下:
//JS代碼
function barrage (value = '文字彈幕', style = {}) {
let barrage = document.createElement('span')
barrage.innerHTML = value
barrage.style.position = 'absolute'
barrage.style.top = `${Math.floor(Math.random() * (document.body.clientHeight - 30))}px`
barrage.style.color = '#fff'
barrage.style.fontSize = '24px'
Object.assign(barrage.style, style)
document.body.appendChild(barrage)
let offsetLeft = barrage.offsetLeft
let totalTime = 15
let animate = barrage.animate([
{ offsetLeft: `calc(100% + ${offsetLeft}px)` },
{ offsetLeft: `${-barrage.offsetWidth - offsetLeft}px` },
], totalTime * 1000)
animate.addEventListener('finish', () =>{
document.body.removeChild(barrage)
})
}
setInterval(() =>{
barrage()
}, 500)
代碼利用了createElement創建元素節點,使用了Math.random來隨機生成彈幕在頁面的位置,同時可以通過style參數控制樣式,并且使用了animation來控制動畫的移動效果。
通過CSS與JS代碼的實現,我們可以實現一個非常酷炫的文字彈幕效果,讓網頁更加生動有趣。