简单实现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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
Mar 22 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
webpack2.0搭建前端项目的教程详解
Apr 05 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 Javascript
Vue中keep-alive的两种应用方式
Jul 15 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 swfupload图片上传的实例代码
2013/09/30 PHP
php生成excel列序号代码实例
2013/12/24 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
php简单实现数组分页的方法
2016/04/30 PHP
php修改数组键名的方法示例
2017/04/15 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python字符串详细介绍
2015/05/09 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
python实现网站微信登录的示例代码
2019/09/18 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
Python中的整除和取模实例
2020/06/03 Python
分享一个python的aes加密代码
2020/12/22 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
京东国际站:JOYBUY
2017/11/23 全球购物
《散步》教学反思
2014/03/02 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python