简单实现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 相关文章推荐
filemanage功能中用到的lib.js
Apr 08 Javascript
javascript小数计算出现近似值的解决办法
Feb 06 Javascript
基于jQuery的倒计时插件代码
May 07 Javascript
jQuery.extend 函数的详细用法
Jun 27 Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
微信小程序日期时间选择器使用方法
Feb 01 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
vue构建动态表单的方法示例
Sep 22 Javascript
vue+eslint+vscode配置教程
Aug 09 Javascript
JavaScript制作3D旋转相册
Aug 02 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 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/10/25 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
python脚本内运行linux命令的方法
2015/07/02 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
python实现树形打印目录结构
2018/03/29 Python
python实现log日志的示例代码
2018/04/28 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
python3安装crypto出错及解决方法
2019/07/30 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python实现名片管理器的示例代码
2019/12/17 Python
python如何删除文件、目录
2020/06/23 Python
党员的自我评价范文
2014/01/02 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书