欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)視頻播放時(shí)屏幕顯示水印

 更新時(shí)間:2023年10月18日 08:24:22   作者:xxnobug  
這篇文章主要為大家詳細(xì)介紹了js如何實(shí)現(xiàn)視頻播放時(shí)屏幕顯示水印的效果,文中的示例代碼講解詳細(xì),對(duì)我們深入掌握js有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

需求描述:視頻在播放的時(shí)候能夠顯示當(dāng)前觀看人的姓名并隨機(jī)切換位置

內(nèi)心Os:這個(gè)加水印不是視頻剪輯工具的功能嗎 為啥要讓前端來寫 什么鬼[崩潰] 沒辦法崩潰歸崩潰 需求還得寫啊

思路:既然是在視頻播放的時(shí)候 那就跟video標(biāo)簽在同一級(jí)Dom中 用css定位來實(shí)現(xiàn)浮動(dòng)在視頻之上 不就可以了? 有想法就干

上來我就是直接獲取video所在的Dom元素 因?yàn)槲业膙ideo是包裹在class是videoPlayBox的div中 所以我先獲取到了video的父元素 然后在獲取父元素中下屬元素

let div = document.getElementById("videoPlayBox");
let divChild = div.firstChild;

創(chuàng)建一個(gè)容納水印數(shù)據(jù)的Dom元素并給他樣式

var appDom = document.createElement("div");
  // appDom.id = "userName";//給這個(gè)元素設(shè)置id
  // appDom.setAttribute("class", "watermarkClass");//給這個(gè)元素設(shè)置類名
  // 你也可以直接就是行內(nèi)樣式
     appDom.style.cssText = `position:absolute;top:${this.topValue}px;left:${this.leftvalue}px; color:rgb(192, 196, 204);font-size:20px;opacity:0.5;`;
  // 再給這個(gè)元素寫入要顯示的水印內(nèi)容
     appDom.innerText = text; // text就是你要顯示的內(nèi)容
  //插入元素
     divChild.appendChild(appDom);

這樣基本一個(gè)水印插入就完成了 下面就是實(shí)現(xiàn)隨機(jī)出現(xiàn)位置 都用position:absolute 肯定就是隨機(jī)改變top跟left就可以了 寫一個(gè)定時(shí)器 比如說2秒換一次位置

setInterval(() => {
  // 先獲取video所在區(qū)域的實(shí)際寬高 總不能直接讓這個(gè)定位離開這個(gè)所在區(qū)域把 
     let widthValue = document.getElementById("videoPlayBoxWapper").offsetWidth;
     let heightValue =document.getElementById("videoPlayBoxWapper").offsetHeight;
// 然后就是取隨機(jī)數(shù) 賦值給你剛才 top 跟 left 綁定的值
     this.leftvalue = widthValue * Math.random();
     this.topValue = heightValue * Math.random();
// 至此 基本就完事了  但是你運(yùn)行起來后發(fā)現(xiàn) top 跟 left雖然改變了 但是頁面中卻沒有改變
     document.getElementById("userName").style.left = `${this.leftvalue}px`;
     document.getElementById("userName").style.top = `${this.topValue}px`;
 // 再加上這一步就完事了 
 }, 2000);

當(dāng)然當(dāng)定時(shí)運(yùn)行的時(shí)候就要考慮到 多次觸發(fā)這個(gè)定時(shí)器 就會(huì)異步全部執(zhí)行 會(huì)導(dǎo)致出現(xiàn)的時(shí)間根本不是你設(shè)置的時(shí)間 所以你要在觸發(fā)這個(gè)方式的時(shí)候 先清除定時(shí)器 然后在執(zhí)行就會(huì)避免這個(gè)問題

if (this.timer != null) {
     clearInterval(this.timer);
  }
  this.timer =  setInterval(() => {
  // 先獲取video所在區(qū)域的實(shí)際寬高 總不能直接讓這個(gè)定位離開這個(gè)所在區(qū)域把 
     let widthValue = document.getElementById("videoPlayBoxWapper").offsetWidth;
     let heightValue =document.getElementById("videoPlayBoxWapper").offsetHeight;
// 然后就是取隨機(jī)數(shù) 賦值給你剛才 top 跟 left 綁定的值
     this.leftvalue = widthValue * Math.random();
     this.topValue = heightValue * Math.random();
// 至此 基本就完事了  但是你運(yùn)行起來后發(fā)現(xiàn) top 跟 left雖然改變了 但是頁面中卻沒有改變
     document.getElementById("userName").style.left = `${this.leftvalue}px`;
     document.getElementById("userName").style.top = `${this.topValue}px`;
 // 再加上這一步就完事了 
 }, 2000);

到此這篇關(guān)于js實(shí)現(xiàn)視頻播放時(shí)屏幕顯示水印的文章就介紹到這了,更多相關(guān)js水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論