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 相关文章推荐
jQuery 性能优化指南 (1)
May 21 Javascript
javascript 模式设计之工厂模式学习心得
Apr 27 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
Jun 27 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
May 12 Javascript
javascript表单事件处理方法详解
May 15 Javascript
JavaScript中的对象和原型(一)
Aug 12 Javascript
JS实现登录页密码的显示和隐藏功能
Dec 06 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
浅谈ECMAScript 中的Array类型
Jun 10 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python验证码识别实例代码
2018/02/03 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
关于赌博的检讨书
2014/01/24 职场文书
材料员岗位职责
2014/03/13 职场文书
英语求职信范文
2014/05/23 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL