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 相关文章推荐
分析Node.js connect ECONNREFUSED错误
Apr 09 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 Javascript
纯javascript移动优先的幻灯片效果
Nov 02 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
AngularJS中的作用域实例分析
May 16 Javascript
vue实现循环切换动画
Oct 17 Javascript
JS实现十分钟倒计时代码实例
Oct 18 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
JavaScript运行机制实例分析
Apr 11 Javascript
javascript+Canvas实现画板功能
Jun 23 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+mysql一个名片库程序
2006/10/09 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
Vue中如何实现proxy代理
2018/04/20 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
使用python遍历指定城市的一周气温
2017/03/31 Python
python用requests实现http请求代码实例
2019/10/31 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
园艺师求职信
2014/03/10 职场文书
行政内勤岗位职责
2014/04/07 职场文书
故宫英文导游词
2015/01/31 职场文书