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卸载全部事件的思路详解
Apr 03 jQuery
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
jQuery中each方法的使用详解
Mar 18 jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
jQuery解析json格式数据示例
Sep 01 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
Jquery动态列功能完整实例
Aug 30 jQuery
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
jquery实现点击左右按钮切换图片
Jan 27 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
给ECShop添加最新评论
2015/01/07 PHP
php中session定期自动清理的方法
2015/11/12 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
Vue响应式原理详解
2017/04/18 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
python根据京东商品url获取产品价格
2015/08/09 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
对python中UDP,socket的使用详解
2019/08/22 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
开业庆典答谢词
2014/01/18 职场文书
教师求职信范文
2014/05/24 职场文书
初一军训感言
2015/08/01 职场文书
老兵退伍感言
2015/08/03 职场文书