HTML5实现视频弹幕功能


Posted in HTML / CSS onAugust 09, 2019

1.首先展示一下弹幕视频弹幕原图,事实说话

HTML5实现视频弹幕功能

2.代码展示

1>html代码展示
 

<div class="barrage">
        <video id="myvideo" autoplay loop width="100%" height="300px">
            <source src="video/1.mp4">
        </video>
        <div class="screen">
            <div class="content">
                <!--内容在这里显示-->
            </div>
        </div>
        <!--发送对话框-->
        <div class="send">
            <input type="text" class="s_text" placeholder="使用回车可以快速发送弹幕"/>
            <input type="button" class="s_btn" value="发送" />
             <!--关闭弹幕功能-->
            <span class="barrage_close">关闭弹幕</span>
            <!-- 静音功能  -->
            <span id="muted">开启静音</span>
        </div>
  </div>

2>css代码展示

*{
    padding: 0;
    margin: 0;
}
input{
    outline: none;
}
.barrage {
    position: relative;
    width: 100%;
    height:250px;
}
#myvideo{
    position: absolute;
    /* width: 100%;
    height:300px; */
    top: -50px;
    left: 0;
    z-index: -1;
}
.barrage .screen {
    position: absolute;
    top: 0px;
    right: 0px;
    width: 100%;
    height: 300px;
}
.barrage .screen .content {
    position: relative;
    width: 100%;
    height: 250px;
    background: #000;
    opacity:0.5;
    /* filter: alpha(opacity=100); *//***针对ie8以上或者更早的浏览器****/
    background-color: transparent;
    z-index: 1;
}
.barrage .screen .content div {
    position: absolute;
    font-size: 20px;
    font-weight: bold;
    white-space: nowrap;
    line-height: 40px;
    z-index: 40;
}
.barrage .send {
    position: absolute;
    bottom: 0px;
    width: 100%;
    height: 55px;
    line-height: 55px;
    z-index: 1;
    /*background: #000;*/
    background: rgba(0,0,0,0.5);
    text-align: center;
    /*display: none;*/
}
.barrage:hover .send{
    display: block;
}
.barrage .send .s_text {
    width: 60%;
    height: 35px;
    line-height:35px;
    font-size: 16px;
    font-family: "微软雅黑";
    border-radius:20px;
    opacity: 0.8;
}
.barrage .send .s_btn {
    width: 105px;
    height: 35px;
    line-height: 35px;
    background: #22B14C;
    color: #fff;
    border-radius: 10px;
    opacity: 0.8;
}
.barrage_close,#muted {
    width: 80px;
    height: 30px;
    line-height: 30px;
    border-radius: 10px;
    text-align: center;
    color: #22B14C;
    background:#fff;
    cursor: pointer;
    opacity: 0.8;
}
#muted{
    background:yellow;
}
.barrage_close1{
    color: #fff;
    background: #fff;
}
/* css动画 */
.content div{
    animation:Text 15s infinite normal;
}
@keyframes Text{
    0%{
        left:100%;
    }
    20%{
        left:75%;
    }
    80%{
        left:0%;
    }
    100%{
        left:-30%;
    }
}

3>js代码展示
 

 

$(function () {
     $(".barrage_close").click(function(){
         $(".content div").remove();
     });
    init_barrage();
});
//将弹幕内容放进数组贮存起来
var arr=[];
var h=arr.push();
// 监听发送,按enter发送
document.οnkeydοwn=function(event){
    var e = event || window.event;
    if(e && e.keyCode==13){ 
    //    console.log(11111);
        $(".send .s_btn").click();
    }                
};
//提交评论
$(".send .s_btn").click(function () {
    var text = $(".s_text").val();
    if (text == "") {
        alert('你的内容为空,请填写评论在再发送');
        return false;
    }
    var _lable = $("<div style='right:20px;top:0px;opacity:1;color:" + getColor() + ";'class='content_text'>" + text + "</div>");
    $(".content").append(_lable.show());
    init_barrage();
    $(".s_text").val("");
});
//初始化弹幕技术
function init_barrage() {
    var _top = 0;
    $(".content div").show().each(function () {
        var _left =$(".barrage").width();//浏器览最大宽度(也是浏览器的高度),作为定位left的值
        console.log(_left);
        var _height =$(".barrage").height();//视频窗口的最大高度
        console.log(_height);
        _top += 35;
        if (_top >= (_height - 150)) {
            _top = 0;
        }
        $(this).css({ left: _left, top: _top, color: getColor() });
        //定时弹出文字
        // var time = 10000;
        // if ($(this).index() % 2 == 0) {
        //     time = 15000;
        // }
        // $(this).animate({ left: "-" + _left + "px" }, time, function () {
        //     $(this).remove();
        // });
    });
}
//获取随机颜色
function getColor() {
    return '#' + (function (h) {
        return new Array(7 - h.length).join("0") + h
    })
    ((Math.random() * 0x1000000 << 0).toString(16))
}
var video=document.getElementById("myvideo");
var mute=document.getElementById("muted");
console.log(muted);
//设置视频播放速度
// video.playbackRate = 0.5;
//视频静音
video.muted = false;
mute.οnclick=function(){
    if(video.muted){
                video.muted = false;   
                mute.innerText='';
                mute.innerText = '开启静音';
                // console.log(1111)
            }else{
                video.muted = true;   
                mute.innerText='';
                mute.innerText = '关闭静音';
                // console.log(2222)
            }
}

3.代码效果演示

<a title="查看演示效果" href="https://leader755.github.io/Video-barrage/" target="_blank" >点我查看演示效果</a>

<a title="下载源码" href="https://github.com/Leader755/Video-barrage.git" target="_blank">点我下载源码</a>

4.最重要的一点别忘了

问题:视频宽度不能100%,高度我定死了300px,有哪位大神帮吗解决一下吧。以下为涉及的主要代码,可以上翻查看详细代码。

<div class="barrage">
            <video id="myvideo" autoplay loop width="100%" height="300px">
                <source src="video/1.mp4">
            </video>
</div>
<style>   
.barrage {
    position: relative;
    width: 100%;
    height:250px;
}
#myvideo{
    position: absolute;
    /* width: 100%;
    height:300px; */
    top: -50px;
    left: 0;
    z-index: -1;
}
</style>

总结

以上所述是小编给大家介绍的HTML5实现视频弹幕功能 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

HTML / CSS 相关文章推荐
css3 条纹化和透明化表格Firefox下测试成功
Apr 15 HTML / CSS
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
May 07 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
Aug 03 HTML / CSS
CSS3区域模块region相关编写示例
Aug 28 HTML / CSS
CSS3实现银灰色动画效果的导航菜单代码
Sep 01 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
Jun 23 HTML / CSS
CSS3自定义滚动条样式的示例代码
Aug 21 HTML / CSS
CSS3实现多样的边框效果
May 04 HTML / CSS
CSS3实现王者匹配时的粒子动画效果
Apr 12 HTML / CSS
html5的canvas实现3d雪花飘舞效果
Dec 27 HTML / CSS
css中有哪些方式可以隐藏页面元素及区别
Jun 16 HTML / CSS
详解CSS3浏览器兼容
Dec 24 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
Aug 05 #HTML / CSS
Canvas多边形绘制的实现方法
Aug 05 #HTML / CSS
使用canvas压缩图片大小的方法示例
Aug 02 #HTML / CSS
HTML5实现移动端弹幕动画效果
Aug 01 #HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
Aug 01 #HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
Aug 01 #HTML / CSS
html5 冒号分隔符对齐的实现
Jul 31 #HTML / CSS
You might like
杏林同学录(四)
2006/10/09 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php实现的双向队列类实例
2014/09/24 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
会计毕业自我鉴定
2014/02/05 职场文书
运动会稿件200字
2014/02/07 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
2022年四月新番
2022/03/15 日漫
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers