不知大家有没有感受到,弹幕又是另一出好戏!! 
不过我个人还是比较排斥看电视的时候被出来的弹幕打扰。今天我们来写一个简单的弹幕。简单到什么程度呢?看下效果:

由图可以看出,我们的呆毛html结构确实是非常简单啦。 
就是由一个p、一个input框另加一个button组成。

<p id="box" class="box"></p>

<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() * ) - ;

 var color1 = parseInt(Math.random() * );

 var color2 = parseInt(Math.random() * );

 var color3 = parseInt(Math.random() * );

 var color = "rgb(" + color1 + "," + color2 + "," + color3 + ")";

 top = top <  ?  : 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() * ) + ;

 span.setAttribute('speed', nub);

 span.speed = nub;

 span.innerHTML = word;

 $('box').appendChild(span);

 $('txt').value = "";

}

setInterval(move, );

function move() {

 var spanArray = $('box').children;

 for (var i = ; i < spanArray.length; i++) {

  spanArray[i].style.left =

   parseInt(spanArray[i].style.left) - spanArray[i].speed + 'px';

 }

}

原理简单说下:

第一步,我们要拿到input框里面的内容,var word = $('txt').value; 
第二步,我们就要把这个内容想方设法地塞到要滚动显示的p里面去了,原则有三:①颜色随机②高度随机③与左边框的距离实时变化; 
第三步,把这个内容追加到p里 $('box').appendChild(span);

由上述步骤原理可以看出,第二步是最关键的一步,

实现第一个原则:

var color1 = parseInt(Math.random() * );

var color2 = parseInt(Math.random() * );

var color3 = parseInt(Math.random() * );

var color = "rgb(" + color1 + "," + color2 + "," + color3 + ")";

span.style.color = color;

小扩展: 

RGB(R,G,B); 
R: 
红色值。正整数 | 百分数 
G: 
绿色值。正整数 | 百分数 
B: 
蓝色值。正整数 | 百分数
这样就应该是很容易理解了。

实现第二个原则:

var top = parseInt(Math.random() * ) - ;

top = top <  ?  : top;

span.style.top = top + "px";

实现第三个原则:

span.style.left = '500px';

setInterval(move, );

function move() {

 var spanArray = $('box').children;

 for (var i = ; i < spanArray.length; i++) {

  spanArray[i].style.left =

   parseInt(spanArray[i].style.left) - spanArray[i].speed + 'px';

 }

}

就是利用了定时器的原理,让left的值实时变化。

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

JavaScript实现简单的弹幕效果实例分析的更多相关文章

  1. Android:简单的弹幕效果达到

    首先,效果图.分类似至360检测到的骚扰电话页面: 布局非常easy,上面是一个RelativeLayout,以下一个Button. 功能: (1)弹幕生成后自己主动从右側往左側滚动(Translat ...

  2. JavaScript做简单的购物车效果(增、删、改、查、克隆)

    比如有时候遇到下面这种情况,点击加入购物车,然后在上方的购物车中动态的添加商品以及商品的信息,我们就可以通过JavaScript实现简单的这些操作. 首先我们需要在html文档中,通过css对页面的布 ...

  3. Javascript自定义事件功能与用法实例分析

    原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...

  4. android 弹幕效果demo

    记得之前有位朋友在我的公众号里问过我,像直播的那种弹幕功能该如何实现?如今直播行业确实是非常火爆啊,大大小小的公司都要涉足一下直播的领域,用斗鱼的话来讲,现在就是千播之战.而弹幕则无疑是直播功能当中最 ...

  5. Android弹幕功能实现,模仿斗鱼直播的弹幕效果

    转载出处:http://blog.csdn.net/sinyu890807/article/details/51933728 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即 ...

  6. 一些有用的javascript实例分析(三)

    原文:一些有用的javascript实例分析(三) 10 输入两个数字,比较大小 window.onload = function () { var aInput = document.getElem ...

  7. 一些有用的javascript实例分析(一)

    原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学 ...

  8. 一些有用的javascript实例分析(二)

    原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...

  9. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

随机推荐

  1. C语言结构体实现类似C++的构造函数

    其主要依靠函数指针来实现,具体看代码吧~ #include <stdio.h> #include <stdlib.h> #include <string.h> ty ...

  2. 性能测试工具Jmeter你所不知道的内幕

    谈到性能测试,大家一定会联想到Jmeter和LoadRunner,这两款工具目前在国内使用的相当广泛,主要原因是Jmeter是开源免费,LoadRunner 11在现网中存在破解版本.商用型性能测试工 ...

  3. Vue组件通信方式全面详解

    vue组件通信方式全面详解 众所周知,Vue主要思想就是组件化开发.因为,在实际的项目开发中,肯定会以组件的开发模式进行.形如页面和页面之间需要通信一样,Vue 组件和组件之间肯定也需要互通有无.共享 ...

  4. OpenCV-Python 使用OCR手写数据集运行KNN | 五十四

    目标 在本章中 我们将使用我们在kNN上的知识来构建基本的OCR应用程序. 我们将尝试使用OpenCV自带的数字和字母数据集. 手写数字的OCR 我们的目标是构建一个可以读取手写数字的应用程序.为此, ...

  5. PHP7内核(一):发展史

    PHP1 1994年,一位名叫Rasmus lerdorf的兄台为了在网上展示自己的履历和网页流量的统计,用Perl开发了一套脚本,后来因与日俱增的需求无法得到满足,lerdorf便使用c语言进行了重 ...

  6. Jmeter接口测试之参数传递(十三)

    在接口自动化测试中,经常会遇到的一种场景就是参数的场景,比如在用户列表中获取所有的用户列表,然后获取到某一个用户的ID,查看该用户的详细信息.首先在这里理清思路,它的流程是,首先获取到数据,然后在Jm ...

  7. Lack of free swap space on Zabbix server

    在模板(Template)里找到Linux OS模板,修改触发器 配置>模板>Template OS Linux>触发器 找到swap关键字 修改 {Template OS Linu ...

  8. spring 事务源码赏析(一)

    在本系列中,我们会分析:1.spring是如何开启事务的.2.spring是如何在不影响业务代码的情况下织入事务逻辑的.3.spirng事务是如何找到相应的的业务代码的.4.spring事务的传播行为 ...

  9. ShardingJDBC的基本配置和使用

    一.ShardingSphere介绍 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Sharding-S ...

  10. 如何理解EventLoop--浏览器篇

    前言 最近在准备春招,刷到了JS中的主要运行机制--Event Loop,觉得它的实现思路有必要整理一下,以防忘记.关于它在浏览器上的实现,我结合了自己的理解以及示例代码,想用最通俗的语言表达出来.如 ...