js实现弹幕墙效果


Posted in Javascript onDecember 10, 2020

本文实例为大家分享了js实现弹幕墙效果的具体代码,供大家参考,具体内容如下

1.首先要考虑弹幕墙需要什么:一面墙,输入框,发射按钮,关闭和开启弹幕按钮,在此关闭和开启设置为同一个按钮;
2.其次弹幕上墙以后需要移动,从墙的最右边移动到最左边,当移动到最左边时,这条弹幕就要消失;
3.初步的想法应该就是当在输入框输入你要发送的内容,点击发送按钮,在墙上会新建一个div来包含这条弹幕内容,再给这个div相应的移动动画class;

4.弹幕颜色随机,单条弹幕之间有间隔;

取随机颜色这里用的是

"#"+(Math.random()*0x1000000<<0).toString(16)

首先,写出它的静态页面;

<!--墙-->
<h1>弹幕墙</h1>
<div id="container">

</div>
<!--弹幕发送关闭-->
<div class="s_c">
  <input id="message" type="text" placeholder="说点什么">
  <div class="btn">
    <button id="sent">发射弹幕</button>
    <button id="clear">关闭弹幕</button>
  </div>
</div>

css样式

#container{
  /*width:700px;*/
  height:500px;
  margin:50px 100px;
  border:solid 2px #7a2a1d;
}
h1{
  text-align:center;
}
.s_c{
  width:500px;
  margin:0 auto;
}
#message{
  width:400px;
  height:30px;
  margin:0 auto;
  position:relative;
  left:50px;
}
.btn{
  padding-top:20px;
  height:30px;
  margin-left:150px;
}
#sent,#clear{
  width:100px;
}

js代码部分:

var arr = [];//用于保存弹幕数据的数组;
var start = true;//用于判断是否需要开启弹幕
  $(document).ready(function(){
    var showscreen = $("#container");//弹幕墙的div
    var showHeight = showscreen.height();//弹幕墙div的高度
    var showWidth = showscreen.width();//弹幕墙div的宽度
    //点击发射按钮事件
    $("#sent").click(function(){
      var text = $("#message").val();//获取用户输入的待发送弹幕
      $("#message").val("");//清空弹幕发送区
      arr.push(text);//将数据存入实现定义好的用于保存弹幕数据的数组
      var send_div=$("<div>"+text+"</div>");
      showscreen.append(send_div);
      // var send_text=$("<div>+text+</div>");//新建div弹幕条
      // var send_div = document.createElement("div");
      // var inner = document.createTextNode(text);
      // send_div.appendChild(inner);
      // document.getElementById("container").appendChild(send_div)//把弹幕挂在墙上
      move_text(send_div);
    })
    //按回车发送
     $("input").keydown(function(event){
       if(event.keyCode == 13){
         $("#sent").trigger("click");//trigger触发被选元素的指定事件类型,触发#send事件的click类型
       }
     })

     if(start==false){
       start = true;
       $("#clear").html("关闭弹幕");
       run();
     }
     //关闭/开启弹幕按钮点击事件
    $("#clear").click(function(){
      if(start == true){
        start = false;
        $("#clear").html("开启弹幕");
        showscreen.empty();
      }else if(start == false){
        start = true;
        $("#clear").html("关闭弹幕");
        run()
      }
    });
     var topMin = showscreen.offset().top;
     var topMax = topMin+showHeight;
     var top = topMin;
     var move_text = function(obj){
       obj.css({
         display:"inline",
         position:"absolute"
       })
       var begin = showscreen.width() - obj.width(); //一开始的起点
       top+=50;

       if(top > topMax-50){
         top = topMin;
       }
       //console.log("showscreenWidth"+showscreen.width());
       //console.log("objWidth",obj.width());

       obj.css({
         left:begin,
         top:top,
         color:getRandomColor()
       });

       var time = 20000 + 10000*Math.random();
       obj.animate({
         left:"-"+begin+"px"
       },time,function(){
         obj.remove();
       });
     };
    var getRandomColor = function(){
      return '#'+('00000'+(Math.random()*0xffffff <<0).toString(16)).substr(-6);
    }

    var run = function(){
      if(start == true){
        if(arr.length > 0){
          var n = Math.floor(Math.random()* arr.length + 1)-1;
          var textObj = $("<div>"+arr[n]+"</div>");
          showscreen.append(textObj);
          //console.log("loop:"+textObj.html());
          move_text(textObj);
        }
      }
      setTimeout(run,3000);
    }

    jQuery.fx.interval = 50;
    run();
})

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

Javascript 相关文章推荐
解析arp病毒背后利用的Javascript技术附解密方法
Aug 06 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
JS 页面计时器示例代码
Oct 28 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
jQuery中prepend()方法使用详解
Aug 11 Javascript
js实现表单检测及表单提示的方法
Aug 14 Javascript
jstl中判断list中是否包含某个值的简单方法
Oct 14 Javascript
React组件refs的使用详解
Feb 09 Javascript
浅谈Angular6的服务和依赖注入
Jun 27 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
实现vuex原理的示例
Oct 21 Javascript
jQuery实现简单弹幕制作
Dec 10 #jQuery
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 #Vue.js
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 #Javascript
vuex页面刷新导致数据丢失的解决方案
Dec 10 #Vue.js
微信小程序实现天气预报功能(附源码)
Dec 10 #Javascript
微信小程序向Java后台传输参数的方法实现
Dec 10 #Javascript
微信小程序反编译的实现
Dec 10 #Javascript
You might like
php使用websocket示例详解
2014/03/12 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
js 居中漂浮广告
2010/03/21 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
详解jquery和vue对比
2019/04/16 jQuery
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python使用range函数计算一组数和的方法
2015/05/07 Python
解决pip install psycopg2出错问题
2020/07/09 Python
Python如何定义接口和抽象类
2020/07/28 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
运动会广播稿60字
2014/01/15 职场文书
大学生个人自荐信
2014/02/24 职场文书
欢度春节标语
2014/07/01 职场文书
考研英语复习计划
2015/01/19 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
一篇文章带你复习java知识点
2021/06/28 Java/Android