简单实现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刷新当前页面的几种方法总结
Dec 24 Javascript
基于jquery实现三级下拉菜单
May 10 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
详解JavaScript中typeof与instanceof用法
Oct 24 Javascript
puppeteer库入门初探
Jan 09 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
简单谈谈javascript高级特性
Sep 04 Javascript
使用js实现一个简单的滚动条过程解析
Sep 10 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
Jan 27 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入门速成教程
2007/03/19 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
javascript几个易错点记录
2014/11/26 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
Python colormap库的安装和使用详情
2020/10/06 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
学生自我鉴定范文
2013/10/04 职场文书
工艺员岗位职责
2014/02/11 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python