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 相关文章推荐
javascript实现的像java、c#之类的sleep暂停的函数代码
Mar 04 Javascript
围观tangram js库
Dec 28 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
JavaScript实现DOM对象选择器
Sep 24 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
浅述Javascript的外部对象
Dec 07 Javascript
jQuery与js实现颜色渐变的方法
Dec 30 Javascript
jQuery中过滤器的基本用法示例
Oct 11 jQuery
vue.js使用代理和使用Nginx来解决跨域的问题
Feb 03 Javascript
vue-cli点击实现全屏功能
Mar 07 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
关于Js中new操作符的作用详解
Feb 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
JS backgroundImage控制
2009/05/19 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
python读取几个G的csv文件方法
2019/01/07 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
pytorch进行上采样的种类实例
2020/02/18 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
英语专业学生的自我评价
2013/12/30 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
防汛工作情况汇报
2014/10/28 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android