简单实现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 相关文章推荐
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
JavaScript转换二进制编码为ASCII码的方法
Apr 16 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
Mar 02 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
js根据需要计算数组中重复出现某个元素的个数
Jan 18 Javascript
微信小程序实现form表单本地储存数据
Jun 27 Javascript
基于Vue中使用节流Lodash throttle详解
Oct 30 Javascript
微信小程序按顺序同步执行的两种方式
Dec 20 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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效率,提高php性能的一些方法
2011/03/24 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
JQuery插件开发示例代码
2013/11/06 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
整理Python中的赋值运算符
2015/05/13 Python
在Python中使用正则表达式的方法
2015/08/13 Python
python实现上传下载文件功能
2020/11/19 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
社团活动策划书范文
2014/01/09 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
预备党员公开承诺书
2014/05/28 职场文书
信息合作协议书
2014/10/09 职场文书
融资合作协议书范本
2014/10/17 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB