简单实现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 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
Jan 11 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
Jan 09 Javascript
js实现密码强度检验
Jan 15 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 11 Javascript
jQuery+ajax实现用户登录验证
Sep 13 jQuery
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获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
JS backgroundImage控制
2009/05/19 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
python实现html转ubb代码(html2ubb)
2014/07/03 Python
python生成二维码的实例详解
2017/10/29 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
通过自学python能找到工作吗
2020/06/21 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
九州传奇上机题
2014/07/10 面试题
毕业生自我鉴定
2013/12/04 职场文书
医院党员公开承诺书
2014/08/30 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
致运动员赞词
2015/07/22 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js
nginx之queue的具体使用
2022/06/28 Servers