jquery实现直播弹幕效果


Posted in jQuery onNovember 28, 2019

本文实例为大家分享了jquery直播弹幕展示的具体代码,供大家参考,具体内容如下

理论知识:

实现效果主要涉及jq对节点的操作,以及动画函数的使用…

思路:

1.获取到评论文本框的值,对文本内容进行处理

2.动态创建一条弹幕,将创建的弹幕动态的添加到需要显示的页面,并同时创建一条新的评论消息,动态添加到评论列表

3.利用数组将每次添加的弹幕保存起来,使用定时器让所有的弹幕循环动态的展示出来

大体上的思路就是这样,下面直接贴代码?

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title></title>
  <style type="text/css">
    html, body {
      margin: 0px;
      padding: 0px;
      width: 100%;
      height: 100%;
      font-family: "微软雅黑";
      font-size: 62.5%;
    }

    .boxDom {
      width: 100%;
      height: 100%;
      position: relative;
      overflow: hidden;
    }

    .idDom {
      width: 100%;
      height: 10%;
      background: #666;
      position: fixed;
      bottom: 0px;
    }

    .content {
      display: inline-block;
      width: 460px;
      height: 40px;
      position: absolute;
      left: 0px;
      right: 0px;
      top: 0px;
      bottom: 0px;
      margin: auto;
    }

    .title {
      display: inline;
      font-size: 4em;
      vertical-align: bottom;
      color: #fff;
    }

    .text {
      border: none;
      width: 300px;
      height: 30px;
      border-radius: 5px;
      font-size: 2.4em;
    }

    .btn {
      width: 60px;
      height: 30px;
      background: #f90000;
      border: none;
      color: #fff;
      font-size: 2.4em;
    }

    span {
      height: 40px;
      position: absolute;
      overflow: hidden;
      color: #000;
      font-size: 4em;
      line-height: 1.5em;
      cursor: pointer;
      white-space: nowrap;
    }
    #boxDom video{
      width: 80%;
      height: 90%;
      float: left;
    }
    #boxDom .list-info{
      width: 20%;
      height: 90%;
      float: left;
      background-color: #666;
      overflow-y: auto;
      overflow-x: hidden;
      position: relative;
      z-index: 999;
    }
    .list-info p{
      font-size: 15px;
      line-height: 20px;
      border-bottom: 1px dashed #ccc;
      text-indent: 2em;
      color: #fff;
    }

  </style>
</head>
<body>
<div class="boxDom" id="boxDom">
  <video controls="controls" src="movie/10_2fdd2bbcd15c68497744f07d4527cef2_3.mp4"></video>
  <div class="list-info"> </div>
  <div class="idDom" id="idDom">
    <div class="content">
      <p class="title">吐槽:</p>
      <input type="text" class="text" id="text"/>
      <button type="button" class="btn" id="btn">发射</button>
    </div>
  </div>
</div>
<script src="js/jquery-1.12.4.js"></script>
<script>
 //生成随机颜色
  var randomColor=function(){
    var r= Math.floor(Math.random()*257);
    var g= Math.floor(Math.random()*257);
    var b= Math.floor(Math.random()*257);
    return "rgb("+r+","+g+","+b+")";
  }
  //定义数组保存弹幕
  var saveDan=[],index=0,tm;
  //弹幕自动移动方法
  var autoAnimate=function(){
    index++;
    index>saveDan.length-1 && (index=0);
    saveDan[index].appendTo($("#boxDom")).animate({
      "right":$(document).width(),
    },10000,function () {
      $(this).css("right",$(".list-info").width()-$(this).width()).remove();
    });
  }
  //点击创建弹幕
  $("#btn").click(function () {
    var txt=$("#text");
    var randomTop=Math.floor(Math.random()*($("#boxDom video").height()-40));
    if(txt.val().trim().length==0)return;
    var span= $("<span></span>").text(txt.val()).css({
      "color":randomColor(),
      "top":randomTop,
      "right":$(".list-info").width(),
      "z-index":888
    });
    saveDan.unshift(span);//将新的弹幕添加到数组内容的前面
    //添加弹幕列表
    $("<p></p>").text(txt.val()).css("color",randomColor()).prependTo($(".list-info"));
    txt.val("");//清空文本框
    //自动跑起来
    clearInterval(tm);
    index=saveDan.length-1
    tm=setInterval(autoAnimate,1000);
  });
  //enter键确认发送
  $(document).keydown(function (e) {
    var e=e||window.event;
    e.keyCode==13 && ($("#btn").click());
  });
</script>
</body>
</html>

最后看看最终的效果图,模仿直播弹幕完成了

jquery实现直播弹幕效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jquery.pagination.js分页使用教程
Oct 23 jQuery
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
jQuery位置选择器用法实例分析
Jun 28 jQuery
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 jQuery
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
JQuery样式与属性设置方法分析
Dec 07 jQuery
jquery实现点击弹出对话框
Feb 08 jQuery
JQuery省市联动效果实现过程详解
May 08 jQuery
jQuery实现简单弹幕效果
Nov 28 #jQuery
jQuery实现轮播图效果
Nov 26 #jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 #jQuery
高效jQuery选择器的5个技巧实例分析
Nov 26 #jQuery
jquery使用echarts实现有向图可视化功能示例
Nov 25 #jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 #jQuery
jquery 插件重新绑定的处理方法分析
Nov 23 #jQuery
You might like
php导入导出excel实例
2013/10/25 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
python模仿网页版微信发送消息功能
2018/02/24 Python
Python根据成绩分析系统浅析
2019/02/11 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
高中运动会前导词
2015/07/20 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS