当前位置:首页 > 日记 > 正文

简单实现JavaScript弹幕效果

简单实现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的值实时变化。

讲到这里,就应该很清晰明了了吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

JS操作时间 - UNIX时间戳的简单介

JS操作时间 - UNIX时间戳的简单介

时间戳,操作,必看,简单,时间,准备知识GMT(Greenwich Mean Time) - 格林尼治时间。UTC(Universal Time Code) - 国际协调时间。PST(Pacific Standard Time,太平洋标准时间)。UTC出现的比GMT时间晚,可以认为UTC时间更加精确,不过它们之间只相差几…

ps怎么在岩石上刻文字? ps岩石刻字

ps怎么在岩石上刻文字? ps岩石刻字

教程,文字,岩石,上刻,电脑软件,ps中想要在岩石中雕刻文字,该怎么雕刻呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、首先启动Photoshop cs5,执行文件-打开命令,打开一副…

[js高手之路]单例模式实现模态框的

[js高手之路]单例模式实现模态框的

模态框,单例模式,之路,示例,高手,什么是单例呢?单,就是一个的意思。例:就是实例化出来的对象,那合在一起就是保证一个构造函数只能new出一个实例,为什么要学习单例模式呢?或者说单例模式有哪些常见的应用场景.它的使用还是很广泛,比如:弹出一个模态…

ajax异步请求刷新

ajax异步请求刷新

刷新,异步请求,电脑软件,ajax,在网站刷新的方法中,ajax刷新是一种用户体验良好的刷新方式,在结合ssh等流行的框架!最为常用了!下面就是常用一个ajax刷新表单的一个demo.$(document).ready(function () { testchaxun(); setInterval("testch…

JS设置CSS样式的方式汇总

JS设置CSS样式的方式汇总

设置,样式,方式,电脑软件,JS,1. 直接设置style的属性 某些情况用这个设置 !important值无效如果属性有'-‘号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style[‘text-align'] = ‘100px';element.style.he…

css和js实现弹出登录居中界面完整

css和js实现弹出登录居中界面完整

界面,登录,弹出,完整,代码,我实现的这个和许多网站上的登录弹出窗口差不多,大家举一反三,先看我写完后的结果。点击创建相册后会在这个屏幕的中间显示创建相册的表单,整个背景颜色变暗,点击右上角的X会关闭这个表单。html代码创建按钮<li id="…

纯js实现页面返回顶部的动画 | 超

纯js实现页面返回顶部的动画 | 超

动画,返回顶部,页面,简单,电脑软件,废话不多说,直接上代码var scrollTop = document.body.scrollTop; document.body.style.marginTop = -scrollTop + 'px'; document.body.scrollTop = 0; document.body.style.transition = 'all 1s …

PHP和Java的主要区别有哪些?哪个最

PHP和Java的主要区别有哪些?哪个最

开发语言,最适合,区别,有哪些,电脑软件,一、前言PHP和Java都是现在比较流行的二种编程语言。对于许多新手来说,都会思考如果学的时候,该学哪种语言呢?下面这篇文章给大家整理两者的区别以及一些选择建议,一起来看看吧。二、简介PHP与Java作为两…

在原生不支持的旧环境中添加兼容的

在原生不支持的旧环境中添加兼容的

方法,原生,不支持,环境,电脑软件,如下所示:if (!Object.keys) { Object.keys = (function () { var hasOwnProperty = Object.prototype.hasOwnProperty, //原型上的方法,只取自身有的属性; hasDontEnumBug = !({toString: null}).propert…

捕获未处理的Promise错误方法

捕获未处理的Promise错误方法

方法,错误,未处理,电脑软件,Promise,为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。使用Promise编写异步代码时,使用reject来处理错误。有时,开发者通常会忽略这一点,导致一些错误…

如何在word中插入封面

如何在word中插入封面

封面,如何在,电脑软件,word,  有时候在word文档中需要好看的封面,但是我们又不知道怎么弄,那就选择在word里面寻找吧,在下面就由小编给大家分享下在word中添加封面的技巧,希望能帮助到您。在word中添加封面的步骤如下:  步骤一:选择需要插入…

photoshop简单制作漂亮的翡翠立体

photoshop简单制作漂亮的翡翠立体

文字,漂亮,简单,电脑软件,photoshop,今天小编就为大家介绍怎样用photoshop制作漂亮的翡翠立体文字方法,推荐到,喜欢的朋友可以参考本文,希望能对大家有所帮助!1、打开你的ps软件,新建一个800*600., 72像素的文件。2、打上你想要做的文字。我这里…