js实现代彩色文字的下落

摘要:
Blink*{margin:0}/*解决兼容性问题*/canvas{display:block;}var

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>闪烁</title>
</head>
<style>

*{margin:0}/* 解决兼容性问题     */
canvas {display: block;}
</style>
<body>
<canvas id="c"></canvas>

<script>
var c = document.getElementById("c");
var ctx = c.getContext("2d");

//全屏
c.height = window.innerHeight;
c.width = window.innerWidth;

//文字
var txts = "陈晓菲";
//转为数组
txts = txts.split("");

var font_size = 16;
var columns = c.width/font_size;
//用于计算输出文字时坐标,所以长度即为列数
var drops = [];
//初始值
for(var x = 0; x < columns; x++)
drops[x] = 1;

//输出文字
function draw()
{
//让背景逐渐由透明到不透明
ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
ctx.fillRect(0, 0, c.width, c.height);

ctx.fillStyle = "#0F0"; //文字颜色
ctx.font = font_size + "px arial";
//逐行输出文字
for(var i = 0; i < drops.length; i++)
{
//随机取要输出的文字
var text = txts[Math.floor(Math.random()*txts.length
)];
//输出文字,注意坐标的计算
ctx.fillText(text, i*font_size, drops[i]*font_size);
ctx.fillStyle = randomColor();
//如果绘满一屏或随机数大于0.95(此数可自行调整,效果会不同)
if(drops[i]*font_size>c.height && Math.random()>0.994)
{
drops[i] = 0;
}
//用于Y轴坐标增加
drops[i]++;
}
}

setInterval(draw, 33);
function randomColor(){
var r =Math.floor(Math.random()*256 );
var g =Math.floor(Math.random()*256 );
var b =Math.floor(Math.random()*256 );
return "rgb("+r+","+g+","+b+")";

}
</script>

</body>
</html>

免责声明:文章转载自《js实现代彩色文字的下落》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux解压缩基本命令使用vlog常用参数解析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js中的数据类型,以及如何检测数据类型

基本数据类型:string,number,boolean,null,undefined,symbol 引用数据类型:object(array,function...) 常用的检测数据类型的方法一般有以下三种: 1.typeof 一般主要用来检测基本数据类型,因为它检测引用数据类型返回的都是object 还需要注意的一点是:typeof检测null返回的也是...

怎么在vue中引入layui

新项目想用layui框架,学习了把前辈是怎么引入layui的,这里记录下 1.index.html要引入layui.js文件 <script src="/static/layui/layui.js" type="text/javascript" charset="utf-8"></script> 2.main.js文件要配置好lay...

JS转义解码方法

之前只知道可以解决传值乱码问题,今天刚好看到,从新补充下:  JavaScript中有三个可以对字符串编码的函数,分别是:    转义方法: escape();//函数可对字符串进行编码 encodeURI();//函数可把字符串作为 URI 进行编码。 encodeURIComponent();//函数可把字符串作为 URI 组件...

用JS添加和删除class类名

下面介绍一下如何给一个节点添加和删除class名 添加:节点.classList.add("类名"); 删除:节点.classList.remove("类名"); 以tab切换为例: 在写tab切换的时候,通常我们会给选中的tab设置不同的样式,常用的方法是给被选中的tab新增一个class名,然后改这个class名的样式。 比如 起一个class名叫“a...

JS组件系列——Bootstrap文件上传组件:bootstrap fileinput

前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了。前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签,效果不忍直视,于是博主下定决心要找一个好看的上传组件换掉它。既然bootstrap开源,那么社区肯定有很多关于它的组件,肯定也有这种常见的上传组件吧。经过一番...

移动端css、Js优处理

CSS 篇 0.5px细线 移动端 H5 项目越来越多,设计师对于 UI 的要求也越来越高,比如 1px 的边框。在高清屏下,移动端的 1px 会很粗。 那么为什么会产生这个问题呢?主要是跟一个东西有关,DPR(devicePixelRatio) 设备像素比,它是默认缩放为 100%的情况下,设备像素和 CSS 像素的比值。目前主流的屏幕 DPR=2(...