简单实现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 相关文章推荐
深入认识JavaScript中的函数
Jan 22 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
基于jquery实现省市联动特效
Dec 17 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
解析如何利用iframe标签以及js制作时钟
Dec 08 Javascript
jquery实现轮播图效果
Feb 13 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
Aug 06 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 Javascript
vue 获取url里参数的两种方法小结
Nov 12 Javascript
前端如何实现动画过渡效果
Feb 05 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_EOL变量的使用)
2013/02/16 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python常用编译器原理及特点解析
2020/03/23 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
应聘教师自荐信
2013/10/12 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
小学生开学感言
2014/02/28 职场文书
会计主管岗位职责
2015/04/02 职场文书
高一化学教学反思
2016/02/22 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle