溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能

發(fā)布時(shí)間:2021-04-20 16:07:27 來(lái)源:億速云 閱讀:205 作者:Leah 欄目:web開(kāi)發(fā)

今天就跟大家聊聊有關(guān)使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

css是什么意思

css是一種用來(lái)表現(xiàn)HTML或XML等文件樣式的計(jì)算機(jī)語(yǔ)言,主要是用來(lái)設(shè)計(jì)網(wǎng)頁(yè)的樣式,使網(wǎng)頁(yè)更加美化。它也是一種定義樣式結(jié)構(gòu)如字體、顏色、位置等的語(yǔ)言,并且css樣式可以直接存儲(chǔ)于HTML網(wǎng)頁(yè)或者單獨(dú)的樣式單文件中,而樣式規(guī)則的優(yōu)先級(jí)由css根據(jù)這個(gè)層次結(jié)構(gòu)決定,從而實(shí)現(xiàn)級(jí)聯(lián)效果,發(fā)展至今,css不僅能裝飾網(wǎng)頁(yè),也可以配合各種腳本對(duì)于網(wǎng)頁(yè)進(jìn)行格式化。

<img src="ps1.jpg" class="mask-image">

css代碼如下:
 

.mask-image {
    width: 250px;
    height: 187.5px;
    -webkit-mask-image: url(mask.png);
    mask-image: url(mask.png);
}

蒙板可以是 CSS3 漸變或者半透明的PNG圖片,蒙板元素的alpha值為0的時(shí)候會(huì)覆蓋下面的元素,為1的時(shí)候會(huì)完全顯示下面的內(nèi)容。效果大概是這樣:

使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能

關(guān)于mask的更多屬性及參數(shù)這里就不一一研究了,具體可以看這篇文章:https://www.zhangxinxu.com/wordpress/2017/11/css-css3-mask-masks/

好了,有了這個(gè)屬性我們就可以愉快的實(shí)現(xiàn)蒙版彈幕了

首先,需要一張底圖,模擬為視頻的某一幀的圖片

使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能

然后我們需要一個(gè)蒙版,遮住背景中的人物

使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能

顯示代碼如下:

html部分:

<div class="container">
    <div class="barrage-wrapper">
    </div>
  </div>

css部分:

.container {
  width: 900px;
  height: 506px;
  background: url(banner.jpg) no-repeat center;
  background-size: cover;
  
}
.barrage-wrapper {
  width: 100%;
  height: 100%;
  position: relative;
  mask-image: url(mask.png);
  -webkit-mask-image: url(mask.png);
}

先看下效果:

使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能

好吧,什么也看不出來(lái)。不過(guò)實(shí)際上人物已經(jīng)加上了蒙版

加點(diǎn)彈幕試試效果。

添加彈幕動(dòng)畫(huà)效果和樣式

@keyframes barrage{
  from{
    left:100%;
    transform:translateX(0);
  }
  to{
    left:0;
    transform:translateX(-100%);
  }
}
.block{
  position:absolute;
  top: 50%;
  left: 100%;
  width: 100%;
  color: #fff;
}

添加彈幕的js腳本

// 生成一個(gè)0~range的隨機(jī)數(shù)
    const geneNumber = range => Math.floor(Math.random() * range)
    var barrages = [
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
      '空降成功', '真香警告', '溫馨提示,前方請(qǐng)調(diào)高音量/趕緊戴耳機(jī)', '彈幕護(hù)體!彈幕護(hù)體!彈幕護(hù)體!', ' 以上企業(yè)均已破產(chǎn)', '前方高能', '我從未見(jiàn)過(guò)如此厚顏無(wú)恥之人', '完結(jié)撒花',
    ]
    const wrapper = document.querySelector('.barrage-wrapper')
    for (const item of barrages) {
      const block = document.createElement('div')
      block.classList.add('block')
      block.style.top = geneNumber(486) + 'px' // 彈幕的位置不能超過(guò)容器的高度
      block.style.animation = `barrage ${geneNumber(20)}s linear ${geneNumber(60)}s` // 隨機(jī)動(dòng)畫(huà)效果
      block.textContent = item
      wrapper.appendChild(block)
    }

看完上述內(nèi)容,你們對(duì)使用css3怎么實(shí)現(xiàn)一個(gè)蒙版彈幕功能有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI