js實現簡易彈幕系統
阿新 • • 發佈:2021-09-13
本文例項為大家分享了原生實現彈幕效果的具體程式碼,供大家參考,具體內容如下
實現思路
1、先寫好靜態頁面框架
<div id='father'> <div id="top"> <video src="./video/s10_2020129112346.mp4" controls autoplay muted loop></video> <!-- controls顯示標準的視訊控制元件 autoplay 視訊自動播放(只有設定了muted屬性才能自動播放) muted靜音播放 loop 迴圈播放--> </div> <div id="bottom"> http://www.cppcns.com<input type="text" id="txt"> <input type="button" id="btn" value="傳送"> </div> </div>
2、給簡單的程式碼讓頁面美觀一點
*{ /*頁面初始化*/ margin: 0; padding: 0; } body{ background-color: burlywood; } #father{ width: 800px; height: 550px; margin: 50px auto; } #top{ width: 800px; height: 500px; } video{ width: 800px; height: 500px; } #bottom{ width: 800px; height: 50px; background-color: #000; text-align: center; line-height: 50px; }
這樣一個簡單的靜態頁面就完成了,剩下的我們就來寫JS程式碼。
3、我們先來封裝幾個函式來方便後面使用。
//隨機生成一種顏色
function rgb (){
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
www.cppcns.com return 'rgb('+r+','+g+','+b+')'
}
//生成指定範圍的資料整數
function stochastic(max,min){
return Math.floor(Math.random()*(max-min)+min);
}
我們傳送的彈幕放在span標籤中,這裡我們要用定位將span放在#top中(子絕父相)
fvNaFHZ//在<div id='#top'></div>新增span標籤 function barrage(){ let span = document.createElement("span"); span.innerHTML = txt.value; span.style.color = rgb(); //彈幕顏色 span.style.fontSize = stochastic(50,12) + 'px'; //字型大小 span.style.top = stochastic(420,0) +'px'; //出現位置 let right = -2000 span.style.right = right + 'px' //距離右邊的距離 tops.appendChild(span); //在<div id='#top'></div>新增span標籤 //通過計時器來實現彈幕的移動 let tiem = setInterval(()=>{ right++; span.style.right = right + 'px' if( right > 800){ tops.removeChild(span); //當彈幕移動出了視訊時,直接銷燬該元素 clearInterval(tiem); //關閉計時器 fvNaFHZ } },10)//覺得速度太慢可以在這調整 }
4、封裝好了函式,現在就來呼叫
let btn = document.getElementById('btn'); //給按鈕新增點選事件 btn.onclick = ()=>{ if(txt.value=='') return; //當用戶輸入為空時直接返回 barrage(); txt.value = ''; //清空input框 } //新增一個鍵盤的監聽事件(回車) document.addEventListener('keydown',function (e) { if (e.keyCode == 13) { if(txt.value=='') return; barrage(); txt.value = ''; } });
最後附上全部程式碼,希望對你有所幫助
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>js彈幕效果</title> <style> *{ margin: 0; padding: 0; } body{ background-color: burlywood; } #father{ width: 800px; height: 550px; margin: 50px auto; } #top{ width: 800px; height: 500px; position: relative; overflow:hidden; /*溢位隱藏*/ } video{ width: 800px; height: 500px; object-fit:fill; /*適應指定容器的高度與寬度*/ } #bottom{ width: 800px; height: 50px; background-color: #000; text-align: center; line-height: 50px; } span{ position: absolute; right: 0; top:0; } </style> </head> <body> <div id='father'> <div id="top"> <video src="./video/s10_2020129112346.mp4" controls autoplay muted loop></video> </div> <div id="bottom"> <input type="text" id="txt"> <input type="button" id="btn" value="傳送"> </div> </div> <script> let txt = document.getElementById('txt'); let btn = document.getElementById('btn'); let tops = document.getElementById('top'); //給按鈕新增點選事件 btn.onclick = ()=>{ if(txt.value=='') return; //當用戶輸入為空時直接返回 barrage(); txt.value = ''; //清空input框 } //新增一個鍵盤的監聽事件(回車) document.addEventListener('keydown',function (e) { if http://www.cppcns.com(e.keyCode == 13) { if(txt.value=='') return; //當用戶輸入為空時直接返回 barrage(); txt.value = ''; //清空input框 } }); //隨機生成一種顏色 function rgb (){ let r = Math.floor(Math.random() * 256); let g = Math.floor(Math.random() * 256); let b = Math.floor(Math.random() * 256); return 'rgb('+r+','+b+')' } //生成指定範圍的資料整數 function stochastic(max,min){ return Math.floor(Math.random()*(max-min)+min); } //在<div id='#top'></div>新增span標籤 function barrage(){ let span = document.createElement("span"); span.innerHTML = txt.value; span.style.color = rgb(); span.style.fontSize = stochastic(50,12) + 'px'; span.style.top = stochastic(420,0) +'px'; span.style.right = -200 + 'px'; tops.appendChild(span); let right = -200; let tiem = setInterval(()=>{ right++; span.style.right = right + 'px' if( right > 800){ tops.removeChild(span); //當彈幕移動出了視訊時,銷燬該元素 clearInterval(tiem); //關閉計時器 } },10)//覺得速度太慢可以在這調整 } </script> </body> </html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。