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查看对象功能代码
Apr 25 Javascript
JQUERY 浏览器判断实现函数
Aug 20 Javascript
JavaScript定时器详解及实例
Aug 01 Javascript
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
javascript快速排序算法详解
Sep 17 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
jquery实现提示语淡入效果
May 05 jQuery
微信小程序使用navigateTo数据传递的实例
Sep 26 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
jsonp实现百度下拉框功能的方法分析
May 10 Javascript
如何基于js判断浏览器版本
Feb 20 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扩展函数
2006/10/09 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
python 基础教程之Map使用方法
2017/01/17 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
医学专业大学生求职的自我评价
2013/11/27 职场文书
消防安全检查制度
2014/02/04 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
核心价值观演讲稿
2014/05/13 职场文书
生物科学专业自荐书
2014/06/20 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
镇创先争优活动总结
2014/08/28 职场文书
运动会致辞稿
2015/07/29 职场文书
详解SQL报错盲注
2022/07/23 SQL Server