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 相关文章推荐
js 事件小结 表格区别
Aug 13 Javascript
JS编程小常识很有用
Nov 26 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
jquery读取xml文件实现省市县三级联动的方法
May 29 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
JavaScript 拖拽实例代码
Sep 21 Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
element ui 表格动态列显示空白bug 修复方法
Sep 04 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python contextlib模块使用示例
2015/02/18 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
2014升学宴答谢词
2014/01/26 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
德语专业求职信
2014/03/12 职场文书
晚会主持词开场白
2014/03/17 职场文书
销售内勤岗位职责
2014/04/15 职场文书
公务员诚信承诺书
2014/05/26 职场文书
安全环保演讲稿
2014/08/28 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python