成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript css3實(shí)現(xiàn)簡單視頻彈幕功能

瀏覽:347日期:2023-05-31 09:16:06

本文嘗試寫了一個demo模擬了最簡單的視頻彈幕功能。

思路:

設(shè)置一個<div>和所播放的video的大小一致,把這個div標(biāo)簽蒙在video上面用于放置彈幕。在video的右邊放一個<ul>列表用于顯示彈幕列表。

屏幕上面的彈幕,把內(nèi)容放在<span>標(biāo)簽里面,一般一行字都是從左邊飛到右邊, 為了簡單起見,這個移動就用了CSS3 的transition 屬性。position設(shè)置為absolute,那么就用的transition過度left屬性,實(shí)現(xiàn)彈幕的移動。當(dāng)然要注意設(shè)置其父元素的樣式 overflow:hidden; 這樣當(dāng)字體飛出去的時(shí)候,就會隱藏飛出去的部分。

當(dāng)點(diǎn)擊發(fā)送的時(shí)候,獲取input中的內(nèi)容、當(dāng)前日期、視頻播放的進(jìn)度video.currentTime,把這個內(nèi)容作為一個對象存入一個數(shù)組中。把放置彈幕的span標(biāo)簽加入到div蒙版里,設(shè)置它的left,transition就會從當(dāng)前l(fā)eft過度到下一個left,所以實(shí)現(xiàn)了移動。過渡完之后這個span標(biāo)簽就沒用了,用removeChild把它中父元素中移除。同時(shí)把生成的<li>標(biāo)簽加入到ul中。

代碼:

<!--Created by CC on 2017/10/11--> <!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><style type='text/css'> .mainBody{margin: 10px auto;text-align: center;font-family: arial;position:relative; } .send{ width:700px;margin:0px auto;text-align:left; } .my-msg{ width:85%; height:35px; } .my-btn{background-color: #ccd0d7;border-radius: 8px;width: 50px;height: 35px;margin-left:30px;border:1px solid #00a1d6; } .my-list{display:inline-block;vertical-align: top;border:1px solid #ccd0d7;width:200px;height:450px;overflow: auto; } .my-tm{position:absolute;top:0px;height:366px;width: 710px;overflow:hidden; } .rtol{position:absolute;display: inline-block;height:28px;overflow: hidden;font-size:24px;color:#fff;left:720px;-moz-transition:left 4s linear;-webkit-transition:left 4s linear;-o-transition:left 4s linear; } ul{text-align: left;list-style-type:none;margin-top:0px;padding-left: 8px; } li span {text-align: left;color: #99a2aa; }</style><body><div> <div class='mainBody'><div style='display:inline-block'><video src='https://rkxy.com.cn/big_buck_bunny.mp4' controls></video><div class='send'> <input type='text' placeholder='發(fā)送彈幕~'> <input type='button' value='發(fā)送'></div></div><div class='my-list'> <span style='color: #00a1d6'>~彈幕~</span> <hr /> <ul id='msg'> </ul></div><div id='tmbox'></div> </div></div><script> var tm=document.getElementById(’tmbox’); var btn=document.getElementById(’sendcc’); var video=document.getElementsByTagName(’video’)[0]; var list=document.getElementById(’msg’); var msg=document.getElementById(’msgcc’); var infor=[]; window.οnlοad=function() {//設(shè)置位置 tm.style.left=(document.body.offsetWidth-911)/2+’px’; } window.οnresize=function(){tm.style.left=(document.body.offsetWidth-911)/2+’px’; } //獲取當(dāng)前日期 function getNowFormatDate() {var date = new Date();var seperator1 = '-';var seperator2 = ':';var month = date.getMonth() + 1;var strDate = date.getDate();if (month >= 1 && month <= 9) { month = '0' + month;}if (strDate >= 0 && strDate <= 9) { strDate = '0' + strDate;}var currentdate = month + seperator1 + strDate + ' ' + date.getHours() + seperator2 + date.getMinutes();return currentdate; } //按下發(fā)送鍵 btn.οnclick=function(){var value=msg.value;if(value&&value!=’’){ var itemInfor={}; itemInfor.value=value; itemInfor.showTime=video.currentTime; //時(shí)間 itemInfor.sendTime=getNowFormatDate(); //發(fā)送時(shí)間 //彈幕列表 var li=document.createElement(’li’); li.className=’my-li’; li.innerHTML='<span> > '+value+'</span>'; list.appendChild(li); //當(dāng)前彈幕 var text=document.createElement(’span’); text.className=’rtol’; text.style.top=Math.floor( Math.random()*12 )*30+’px’; text.innerHTML=value; tm.appendChild(text); //左邊位置 setTimeout(function(){text.style.left=-value.length*25+’px’; },200); //之后把不顯示的span刪除 setTimeout(function(){ tm.removeChild(text) //防止已有彈幕和當(dāng)前發(fā)送的顯示沖突,在這里加入到數(shù)組中 infor.push(itemInfor);},5000 )} } //顯示已有彈幕 setInterval(function(){ if(video.paused==false) { infor.forEach(function(item){ var currentTime=video.currentTime; if(item.showTime<video.currentTime&&item.showTime>=(video.currentTime-0.5)) { var text=document.createElement(’span’); text.className=’rtol’; text.style.top=Math.floor( Math.random()*12 )*30+’px’; text.innerHTML=item.value; tm.appendChild(text); //左邊位置 setTimeout(function(){ text.style.left=-(item.value.length*25)+’px’; },200); //之后把不顯示的span刪除 setTimeout(function(){ tm.removeChild(text); },5000 ) } }); } },500)</script> </body></html>

效果:

JavaScript css3實(shí)現(xiàn)簡單視頻彈幕功能

雖然這樣寫很簡單,但是有個很大的問題就是transition過渡left屬性不能暫停,所以自然這個transition動畫就只能等它執(zhí)行完。或者說每個<span>標(biāo)簽的移動都用interval定時(shí)器來完成移動。不過這樣寫就要復(fù)雜一些。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美三区在线视频| 欧美一级视频| 欧美一区二视频| 亚洲狠狠丁香婷婷综合久久久| 国产精品亚洲综合一区在线观看| 91久久国产最好的精华液| 亚洲天堂福利av| 欧美理论在线| 26uuu亚洲婷婷狠狠天堂| 国产高清亚洲一区| 欧美精品成人一区二区三区四区| 性欧美大战久久久久久久久| 激情综合视频| 国产精品入口麻豆九色| 91网站在线观看视频| 3d动漫精品啪啪一区二区竹菊| 日韩高清中文字幕一区| 久久午夜影视| 日欧美一区二区| 蜜桃视频一区| 欧美aaaaaa午夜精品| 日本道精品一区二区三区| 婷婷国产在线综合| 色视频欧美一区二区三区| 亚洲成人资源网| 91黄色免费网站| 九色porny丨国产精品| 欧美日韩一区不卡| 国产999精品久久| 久久亚洲捆绑美女| 色综合色狠狠综合色| 国产精品乱人伦一区二区| 国产精品99免费看| 亚洲视频综合在线| 国产美女诱惑一区二区| 午夜精品久久久| 欧美老肥妇做.爰bbww视频| 国产精品资源在线看| 欧美变态tickle挠乳网站| av亚洲精华国产精华精华| 久久精品一区二区三区四区| 欧美日韩在线不卡一区| 一区二区三区高清不卡| 色婷婷综合久久久中文一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 3751色影院一区二区三区| 农村妇女精品| 怡红院av一区二区三区| 欧洲精品视频在线观看| 国产乱一区二区| 国产日韩精品一区二区浪潮av| 狠狠色丁香久久综合频道| 亚洲与欧洲av电影| 精品视频一区三区九区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲人体偷拍| 日韩精品91亚洲二区在线观看| 欧美精品视频www在线观看| 色综合网站在线| 亚洲成人自拍一区| 日韩一级黄色片| 激情欧美日韩| 免费成人美女在线观看.| 精品久久久久久无| 国产私拍一区| 国产精品亚洲а∨天堂免在线| 国产亚洲欧美在线| 色综合久久久久久久| 成人av电影在线| 亚洲国产综合91精品麻豆| 91精品国产免费| 日韩亚洲视频| 国产精品白丝av| 亚洲免费观看视频| 制服丝袜中文字幕一区| 亚洲黄色成人久久久| 精品一区二区在线视频| 国产精品久久久久久久第一福利| 在线观看视频一区| 国内激情久久| 黄网站免费久久| 亚洲在线中文字幕| 久久精品网站免费观看| 久久一综合视频| 欧美日本亚洲| 国产麻豆欧美日韩一区| 成人欧美一区二区三区在线播放| 欧美丰满少妇xxxxx高潮对白| 国产精品jizz在线观看美国| 久久国产精品色婷婷| 亚洲日本欧美天堂| 欧美一区日本一区韩国一区| 媚黑女一区二区| 国产精品porn| 国产91丝袜在线观看| 日韩精彩视频在线观看| 国产精品久久久久久久裸模| 欧美一区二区三区日韩| 色哟哟精品一区| 在线播放日韩| 97精品久久久久中文字幕| 免费美女久久99| 一区二区三区中文在线观看| 久久新电视剧免费观看| 欧美日韩视频在线观看一区二区三区 | 欧美二区乱c少妇| 久久精品毛片| 9色精品在线| 欧美久久久久| 不卡的av电影在线观看| 久久爱www久久做| 亚洲成人手机在线| 成人欧美一区二区三区黑人麻豆| 久久中文娱乐网| 欧美一卡二卡三卡| 欧美午夜一区二区三区| 久久高清免费观看| 在线亚洲成人| 亚洲国产精品毛片| 欧美国产视频在线观看| 波多野结衣中文字幕一区二区三区| 免费欧美日韩国产三级电影| 亚洲一区二区不卡免费| 亚洲色图欧洲色图婷婷| 中国色在线观看另类| 久久午夜国产精品| 欧美成人精品二区三区99精品| 欧美午夜精品一区| 久久精品国产清高在天天线| 国产精品免费一区二区三区在线观看 | 亚洲理论在线观看| 影音先锋中文字幕一区| 久久综合九色99| 精品国产乱码久久久久久免费| 黑丝一区二区三区| 久久婷婷综合激情| 国产一二三精品| 91精品国产欧美一区二区| 蜜臀av在线播放一区二区三区| 国产精品日韩欧美一区二区| 亚洲免费在线观看| 国产欧美一区二区三区鸳鸯浴| 国产伦理精品不卡| 日韩精品专区在线影院观看| 精品粉嫩超白一线天av| 欧美日韩专区| 精品对白一区国产伦| 久久久久国产精品麻豆ai换脸| 久久亚洲综合av| 中文字幕精品一区二区三区精品| 国产日本欧美一区二区| 国产精品视频一二三| 亚洲三级在线免费观看| 一区二区三区在线播| 午夜激情久久久| 蜜桃视频一区二区| 国产精品自在在线| 99精品视频在线观看免费| 欧美日韩一区二区高清| 99精品视频免费| 亚洲男人影院| 欧美日韩黄色一区二区| 精品免费99久久| 国产精品狼人久久影院观看方式| 亚洲欧洲中文日韩久久av乱码| 亚洲bt欧美bt精品| 国产在线精品不卡| 91视频免费看| 亚洲精品女人| 91九色最新地址| 久久综合久久99| 亚洲欧美激情插 | 亚洲人成精品久久久久| 爽好久久久欧美精品| 国产精品一区二区免费不卡| 972aa.com艺术欧美| 在线视频欧美一区| 欧美日韩国产首页在线观看| 久久久综合视频| 亚洲一区二区三区小说| 国产乱妇无码大片在线观看| 你懂的网址国产 欧美| 欧美一级视频| 精品久久一区二区三区| 亚洲一区二区三区视频在线 | 五月天精品一区二区三区| 国产成人aaaa| 亚洲清纯自拍| 91精品国产综合久久久久久久| 久久久夜色精品亚洲| 亚洲成人777| 成人18视频日本| 亚洲一区二区在线免费观看| 日韩精品在线看片z| 一区二区高清在线| av在线这里只有精品| 久久久99爱| 久久精品亚洲一区二区三区浴池 | 男女男精品视频网| 欧美激情综合|