简单实现JavaScript弹幕效果


Posted in Javascript onAugust 27, 2020

不知大家有没有感受到,弹幕又是另一出好戏!!

不过我个人还是比较排斥看电视的时候被出来的弹幕打扰。今天我们来写一个简单的弹幕。简单到什么程度呢?看下效果:

简单实现JavaScript弹幕效果

由图可以看出,我们的呆毛html结构确实是非常简单啦。
就是由一个div、一个input框另加一个button组成。

<div id="box" class="box"></div>
 <input type="text" id="txt" />
 <button onclick="send()">提交内容</button>

先po上js代码:

function $(str) {
 return document.getElementById(str);
 }
 function send() {
 var word = $('txt').value;
 var span = document.createElement('span');
 var top = parseInt(Math.random() * 500) - 20;
 var color1 = parseInt(Math.random() * 256);
 var color2 = parseInt(Math.random() * 256);
 var color3 = parseInt(Math.random() * 256);
 var color = "rgb(" + color1 + "," + color2 + "," + color3 + ")";
 top = top < 0 ? 0 : top;
 span.style.position = 'absolute';
 span.style.top = top + "px";
 span.style.color = color;
 span.style.left = '500px';
 span.style.whiteSpace = 'nowrap';
 var nub = (Math.random() * 10) + 1;
 span.setAttribute('speed', nub);
 span.speed = nub;
 span.innerHTML = word;
 $('box').appendChild(span);
 $('txt').value = "";
 }
 setInterval(move, 200);
 function move() {
 var spanArray = $('box').children;
 for (var i = 0; i < spanArray.length; i++) {
  spanArray[i].style.left =
  parseInt(spanArray[i].style.left) - spanArray[i].speed + 'px';
 }
 }

原理简单说下:

第一步,我们要拿到input框里面的内容,var word = $('txt').value;
第二步,我们就要把这个内容想方设法地塞到要滚动显示的div里面去了,原则有三:①颜色随机②高度随机③与左边框的距离实时变化;
第三步,把这个内容追加到div里  $('box').appendChild(span);

由上述步骤原理可以看出,第二步是最关键的一步,

实现第一个原则:

var color1 = parseInt(Math.random() * 256);
 var color2 = parseInt(Math.random() * 256);
 var color3 = parseInt(Math.random() * 256);
 var color = "rgb(" + color1 + "," + color2 + "," + color3 + ")";
 span.style.color = color;

小扩展:

RGB(R,G,B);
R:
红色值。正整数 | 百分数
G:
绿色值。正整数 | 百分数
B:
蓝色值。正整数 | 百分数
这样就应该是很容易理解了。

实现第二个原则:

var top = parseInt(Math.random() * 500) - 20;
top = top < 0 ? 0 : top;
span.style.top = top + "px";

实现第三个原则:

span.style.left = '500px';
 setInterval(move, 200);
 function move() {
 var spanArray = $('box').children;
 for (var i = 0; i < spanArray.length; i++) {
  spanArray[i].style.left =
  parseInt(spanArray[i].style.left) - spanArray[i].speed + 'px';
 }
 }

就是利用了定时器的原理,让left的值实时变化。

讲到这里,就应该很清晰明了了吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 设置标题的自动翻转
Oct 03 Javascript
JQuery与iframe交互实现代码
Dec 24 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
JQUERY 设置SELECT选中项代码
Feb 07 Javascript
vuex实现简易计数器
Oct 27 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
vuejs指令详解
Feb 07 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
微信小程序 获取二维码实例详解
Jun 23 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 #Javascript
详解webpack打包vue时提取css
May 26 #Javascript
jQuery插件imgAreaSelect基础讲解
May 26 #jQuery
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 #jQuery
Angular2 之 路由与导航详细介绍
May 26 #Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 #Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 #Javascript
You might like
php实现多张图片上传加水印技巧
2013/04/18 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
Python使用django搭建web开发环境
2017/06/09 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
化工机械应届生求职信
2013/11/04 职场文书
公司同意接收函
2014/01/13 职场文书
聚美优品广告词改编
2014/03/14 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
公司授权委托书范文
2014/09/21 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers