简单实现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 相关文章推荐
网页里控制图片大小的相关代码
Jun 25 Javascript
javascript之函数直接量(function(){})()
Jun 29 Javascript
js截取字符串的两种方法及区别详解
Nov 05 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
jQuery验证插件validation使用指南
Apr 21 Javascript
javascript中sort排序实例详解
Jul 24 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
Vue + ts实现轮播插件的示例
Nov 10 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 Javascript
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
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
利用 window_onload 实现select默认选择
2006/10/09 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP实现货币换算的方法
2014/11/29 PHP
php中异常处理方法小结
2015/01/09 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
在新窗口打开超链接的方法小结
2013/04/14 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
详解python中docx库的安装过程
2019/11/08 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
联想德国官网:Lenovo Germany
2018/07/04 全球购物
监理员的岗位职责
2013/11/13 职场文书
中层干部岗位职责
2013/12/18 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
培训简讯范文
2015/07/20 职场文书
企业法人任命书
2015/09/21 职场文书