弹幕 html + css + jquery

<!DOCTYPE html>

<html lang="en">

<head>  

<meta charset="UTF-8">  

<meta name="viewport" content="width=device-width, initial-scale=1.0">  

<meta http-equiv="X-UA-Compatible" content="ie=edge">  

<title>弹幕</title>  

<style>    

* {       padding: 0;       margin: 0;     }    

body {       font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;     }    

.wrapBox {       width: 800px;       height: 550px;       border: 1px solid #000;       margin: 50px auto 0;     }    

.videoBox {       height: 500px;       position: relative;       overflow: hidden;     }  

  .videoBox img {       width: 100%;       height: 100%;     }     video {       width: 100%;       /* height: 500px; */     }    

.danmuSend {       display: flex;       height: 50px;     }    

#content {       flex: 1;     }    

#send {       width: 100px;     }  

.danmu {       color: #f00;       font-size: 20px;       position: absolute;       left: 800px;       top: 0;       white-space: nowrap;     }  

</style>

</head>

<body>  

<div class="wrapBox">    

<div class="videoBox">      

<img src="../source/bg.jpg" />      

<!-- <span class="danmu">我是弹幕</span> -->    

</div>    

<div class="danmuSend">      

<input id="content" type="text">      

<button id="send">发送</button>    

</div>  

</div>

</body>

<script>  

var oVideoBox = document.querySelector('.videoBox');  

var oContent = document.querySelector('#content');  

var oSend = document.querySelector('#send');  

oSend.onclick = function(){    

var content = oContent.value;     // console.log(content);     add(content);  

}  

function add(content) {    

if (!content) {       alert('sss');       return     }    

var oSpan = document.createElement('span');    

oSpan.className = 'danmu';    

oSpan.innerHTML = content;    

oVideoBox.appendChild(oSpan);    

var maxTop = oVideoBox.clientHeight - oSpan.offsetHeight;//设置弹幕最大距离顶部高度     oSpan.style.top = Math.round(Math.random() * maxTop) + 'px';//设置随机高度    

// console.log( maxTop,oSpan.offsetHeight);    

//设置定时器移动弹幕    

var timer = setInterval(() => {      

var start = oSpan.offsetLeft;       start -= 5;      

// console.log(start);      

oSpan.style.left = start + 'px';      

if (start < -oSpan.offsetWidth) {        

clearInterval(timer);         oSpan.remove();      

} }, 40);    

oContent.value= '';  

} </script>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
视频弹幕特效可以使用 JavaScriptjQuery 来实现,具体步骤如下: 1. 创建弹幕元素 首先,在视频播放器下方创建一个 div 元素,用于显示弹幕,将其样式设置为绝对定位,宽度为视频播放器的宽度,高度为弹幕字体大小的两倍,背景色为透明。 ```html <div id="danmu-container"></div> ``` ```css #danmu-container { position: absolute; bottom: 0; width: 100%; height: 2em; background-color: transparent; overflow: hidden; } ``` 2. 发送弹幕 使用 jQuery 监听发送按钮的点击事件,获取文本框中的弹幕内容,并动态创建一个 span 元素,设置其样式和文本内容,将其添加到弹幕容器内,设置其初始位置为容器的右侧,使用 animate() 方法实现弹幕的滚动效果。 ```html <input type="text" id="danmu-input"> <button id="danmu-send">发送</button> ``` ```javascript $('#danmu-send').click(function() { var content = $('#danmu-input').val(); if (content) { var $danmu = $('<span>' + content + '</span>'); $danmu.css({ position: 'absolute', top: Math.random() * ($('#danmu-container').height() - 30) + 'px', right: 0, fontSize: '1em', whiteSpace: 'nowrap', color: '#fff' }); $('#danmu-container').append($danmu); $danmu.animate({ left: $('#danmu-container').width() }, 8000, function() { $(this).remove(); }); $('#danmu-input').val(''); } }); ``` 3. 暂停弹幕 使用 jQuery 监听视频播放器的暂停事件,遍历弹幕容器内的所有弹幕元素,使用 stop() 方法停止弹幕的滚动动画,即可实现暂停弹幕的效果。 ```javascript $('#video-player').on('pause', function() { $('#danmu-container span').stop(); }); ``` 4. 添加特效 为了实现弹幕特效,可以对弹幕元素的样式进行修改,例如使用 CSS3 的 transform 属性实现弹幕的旋转效果,使用 text-shadow 属性实现弹幕的阴影效果等。具体代码如下: ```css #danmu-container span { position: absolute; top: 0; right: 0; font-size: 1em; white-space: nowrap; color: #fff; transform: rotateY(180deg); text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } ``` 在代码中,使用 transform 属性设置弹幕元素的旋转角度为 180 度,使其水平翻转,使用 text-shadow 属性设置弹幕元素的阴影效果,增强其边缘清晰度。 需要注意的是,弹幕特效的实现需要根据具体需求进行调整,例如可以添加动态缩放、透明渐变等其他效果。同时,为了避免弹幕重叠,可以设置弹幕元素之间的间隔,避免弹幕重叠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值