当前位置: 首页 > news >正文

视频弹幕Demo

源码整理自互联网,原作者不详。

Demo地址

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <title>斗鱼弹幕</title>
    <style>
        html,body{font-size:10px;overflow:hidden;margin:0;padding:0;}
        #box{width:100%;height:100%;}
        #dm{width:100%;height:90vh;background:#E8F1F5;}
        #dm span{width:auto;height:3rem;font-size:2rem;line-height:2rem;position:absolute;white-space:nowrap;}
        #idDom{width:100%;height:10vh;background:#666;position:absolute;bottom:0;display:flex;align-items:center;justify-content:center;}
        #content{width:50rem;height:10vh;display:flex;align-items:center;justify-content:center;}
        .title{font-size:2.2px rein;color:#fff;line-height:#ccc;}
        .text{width:30rem;height:2.5rem;border:none;border-radius:.5rem;font-size:1.4rem;margin:0 .5rem;padding:0 1rem;}
        .btn{width:6rem;height:3rem;border:none;background:red;color:#fff;}
    </style>
</head>

<body>

<div class="box" id="box">
    <div id="dm"></div>
    <div class="idDom" id="idDom">
        <div id="content">
            <p class="title">吐槽:</p>
            <input type="text" class="text" id="text" placeholder="请输入你想说的话" />
            <button type="button" class="btn" id="btn">发射!</button>
        </div>
    </div>
</div>
<script langugae="javascript">
var timer;
var btn = document.getElementById('btn');

btn.onclick = function() { addBarrage();}
document.onkeydown = function(evt) {var event = evt || window.event;if (event.keyCode == 13) {addBarrage();}}
var colors = ['#2C3E50', '#FF0000', '#1E87F0', '#7AC84B', '#FF7F00', '#9B39F4', '#FF69B4'];//弹幕颜色库

function addBarrage() {
    clearInterval(timer);
    var text = document.getElementById('text').value;
    document.getElementById('text').value = "";
       var index = parseInt(Math.random() * colors.length); //随机弹幕颜色
    var screenW = window.innerWidth;
    var screenH = dm.offsetHeight;
    var max = Math.floor(screenH / 40);
    var height = 10 + 40 * (parseInt(Math.random() * (max + 1)) - 1);
    var span = document.createElement('span');
    span.style.left = screenW + 'px';
    span.style.top = height + 'px';
    span.style.color = colors[index];
    span.innerHTML = text;
    var dmDom = document.getElementById('dm');
    dmDom.appendChild(span);
    timer = setInterval(move, 10);
}
function move() {
    var arr=[];
    var oSpan=document.getElementsByTagName('span');
    for(var i=0;i<oSpan.length;i++){
        arr.push(oSpan[i].offsetLeft);
        arr[i] -= 2;
        oSpan[i].style.left = arr[i]+'px';
        if(arr[i]<-oSpan[i].offsetWidth){
            var dmDom=document.getElementById('dm');
            dmDom.removeChild(dmDom.childNodes[0]);
        }
    }
}
</script>
</body>
</html>

相关文章:

  • 《杜拉拉升职记》之经典语录
  • Win7 PHP v5.6 成功安装Imagick库
  • 在VC下配置openGL
  • [转]CURL 非阻塞调用类
  • 如何在VC下配置openGL2
  • 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)
  • 滑动菜单及滑动解锁技术分析
  • CentOS 67 下安装二进制版FFMPEG
  • 提供一个MTK在LCD上直接输入汉字或其他语言字串的函数
  • CentOS常用仓库
  • MySQL里bool类型字段是否需要添加索引测试
  • 提供一个MTK平台可以使用的DES加密算法
  • Linux磁盘空间不够用怎么办?
  • MTK层的运用
  • 树莓派上运行docker
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 77. Combinations
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Angular 4.x 动态创建组件
  • FineReport中如何实现自动滚屏效果
  • Git的一些常用操作
  • java中的hashCode
  • jquery ajax学习笔记
  • Js基础知识(四) - js运行原理与机制
  • Mysql数据库的条件查询语句
  • text-decoration与color属性
  • Travix是如何部署应用程序到Kubernetes上的
  • TypeScript迭代器
  • Wamp集成环境 添加PHP的新版本
  • 闭包,sync使用细节
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 深度学习入门:10门免费线上课程推荐
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​用户画像从0到100的构建思路
  • #if 1...#endif
  • (70min)字节暑假实习二面(已挂)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (二)学习JVM —— 垃圾回收机制
  • (十)T检验-第一部分
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • ******之网络***——物理***
  • ... 是什么 ?... 有什么用处?
  • .Net 8.0 新的变化
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Reactor简单使用教程
  • .net Signalr 使用笔记
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET应用架构设计:原则、模式与实践 目录预览