canvas背景
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>canvas字母喷射效果</title>
- <style>
- *{
- margin:0;
- padding:0;
- }
- body{
- background:#000000;
- overflow:hidden;
- }
- </style>
- </head>
- <body>
- <canvas id=canvas></canvas>
- <script>
- //页面命名空间 命名空间就是对象 需要用到this
- var Canvas={};
- Canvas.anim={
- //初始化
- init:function(){
- var canvas=document.getElementById("canvas");
- this.ctx=canvas.getContext("2d");//画笔,创建2d空间,加this相当于全局变量
- canvas.width=window.innerWidth;
- canvas.height=window.innerHeight;
- this.letters="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- this.cw=canvas.width;
- this.ch=canvas.height;
- this.particles=[];
- },
- //执行动画
- render:function(){
- //粒子的属性
- var particle={
- //显示的位置random为随机数0-1
- x:this.cw/2,
- y:this.ch,
- character:this.letters[Math.floor(Math.random()*this.letters.length)],
- //速度值
- xSpeed: (Math.random()*20)-10,
- ySpeed: (Math.random()*20)-10
- }
- this.particles.push(particle);
- this.drawParticles();
- },
- //绘制字母
- drawParticles: function(){
- this.fadeCanvas();
- var particleCount=this.particles.length;
- var c=this.ctx;
- for(var i=0;i<particleCount;i++){
- var particle=this.particles[i];
- c.font="12px sans-serif";
- c.fillStyle="#ffffff";
- c.fillText(particle.character,particle.x,particle.y);
- particle.x += particle.xSpeed;
- particle.y += particle.ySpeed;
- // 驶近Y轴
- particle.y *= 0.97;
- }
- },
- //清除画布
- fadeCanvas: function(){
- this.ctx.fillStyle = "rgba(0,0,0,0.5)";
- this.ctx.fillRect(0,0,this.cw,this.ch);
- }
- };
- Canvas.anim.init();
- setInterval(function(){
- Canvas.anim.render();
- },13);
- </script>
- </body>
- </html>
加入绘制字母
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>canvas字母喷射</title>
- <style>
- *{
- padding: 0px;
- margin: 0px;
- }
- #canvas{
- background-color:#000;
- }
- </style>
- <body>
- <canvas id="canvas"></canvas>
- </body>
- <script>
- // 页面命名空间
- var Canvas = {}
- Canvas.anim = {
- // 初始化
- init: function(){
- var canvas = document.getElementById("canvas");
- this.ctx = canvas.getContext("2d");
- canvas.width = window.innerWidth;
- canvas.height = window.innerHeight;
- this.cw = canvas.width;
- this.ch = canvas.height;
- // 随机字母
- this.letters = "QWERTYUIOPLKJHGFDSAZXCVBNM";
- // 位置
- this.particles = [];
- },
- // 执行动画
- rander: function(){
- // 显示的位置
- var particle = {
- x: this.cw/2,
- y: this.ch,
- // 随机字母
- character: this.letters[Math.floor(Math.random()*this.letters.length)],
- // 速度值
- xSpeed: (Math.random()*20)-10,
- ySpeed: (Math.random()*20)-10
- }
- this.particles.push(particle);
- this.drawParticles();
- },
- // 绘制字母
- drawParticles: function(){
- this.fadeCanvas();
- var c = this.ctx;
- // 喷射字母
- var particleCount = this.particles.length;
- for(var i=0;i<particleCount;i++){
- var particle = this.particles[i];
- c.font = "12px";
- c.fillStyle = "#ffffff";
- c.fillText(particle.character,particle.x,particle.y);
- particle.x += particle.xSpeed;
- particle.y += particle.ySpeed;
- // 驶近Y轴
- particle.y *= 0.97;
- }
- // 绘制名字
- var fontParticleCount = Font.particles.length;
- for(var i=0;i<fontParticleCount;i++){
- var particle = Font.particles[i];
- c.font = "12px";
- c.fillStyle = "#ff00cc";
- c.fillText(particle.character,particle.x,particle.y);
- }
- },
- // 清除画布
- fadeCanvas: function(){
- this.ctx.fillStyle = "rgba(0,0,0,0.5)";
- this.ctx.fillRect(0,0,this.cw,this.ch);
- }
- };
- Canvas.anim.init();
- var Font = {
- init: function(){
- this.startX = window.innerWidth/2-150;
- this.startY = window.innerHeight/2-200;
- this.speed = 130; // 速度值
- this.smallSpace = 10; // 字母间隔
- // 字母位置
- this.particles = [];
- },
- // 执行动画
- rander: function(xPoint, yPoint){
- // 显示的位置
- var particle = {
- x: xPoint,
- y: yPoint,
- // 随机字母
- character: "0",
- }
- this.particles.push(particle);
- },
- // 画I
- draw_i: function(callback){
- var _this = this;
- var width=40,height=100;
- // 画-
- var draw_1 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- _this.rander(_this.startX+_this.smallSpace*i,_this.startY);
- if(_this.smallSpace*i >= width){
- clearInterval(intVal);
- draw_2();
- }
- },_this.speed);
- }
- // 画|
- var draw_2 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- _this.rander(_this.startX+width/2+_this.smallSpace/2,_this.startY+_this.smallSpace*i);
- if(_this.smallSpace*i >= height){
- clearInterval(intVal);
- draw_3();
- }
- },_this.speed);
- }
- // 画-
- var draw_3 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- _this.rander(_this.startX+_this.smallSpace*i,_this.startY+height+_this.smallSpace);
- if(_this.smallSpace*i >= width){
- clearInterval(intVal);
- callback();
- }
- },_this.speed);
- }
- draw_1();
- },
- // 画心形
- draw_v: function(callback){
- var _this = this;
- var v_startX = _this.startX;
- var v_startY = _this.startY;
- var width=80,height=100;
- // 凹度,高
- var concave = 15;
- // 斜边,宽高
- var hypotenuseWidth = 20;
- var hypotenuseHeight = 100;
- var draw_1 = function(){
- var i = 0;
- _this.rander(v_startX,v_startY+concave);
- var intVal = setInterval(function(){
- i++;
- // 每次偏移量
- var y = concave/(width/2/_this.smallSpace)*i;
- _this.rander(v_startX-_this.smallSpace*i,v_startY+concave-y);
- if(_this.smallSpace*i >= width/2){
- v_startX = v_startX-_this.smallSpace*i;
- v_startY = v_startY+concave-y;
- clearInterval(intVal);
- draw_2();
- }
- },_this.speed);
- }
- var draw_2 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- // 每次偏移量
- var y = hypotenuseHeight/_this.smallSpace*i;
- _this.rander(v_startX-_this.smallSpace*i,v_startY+y);
- if(_this.smallSpace*i >= hypotenuseWidth){
- v_startX = v_startX-_this.smallSpace*i;
- v_startY = v_startY+y;
- clearInterval(intVal);
- draw_3();
- }
- },_this.speed);
- }
- var draw_3 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- // 每次偏移量
- var x = (width/2+hypotenuseWidth)/_this.smallSpace*i;
- _this.rander(v_startX+x,v_startY+_this.smallSpace*i);
- if(_this.smallSpace*i >= height){
- v_startX = v_startX+x;
- v_startY = v_startY+_this.smallSpace*i;
- clearInterval(intVal);
- draw_4();
- }
- },_this.speed);
- }
- var draw_4 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- // 每次偏移量
- var x = (width/2+hypotenuseWidth)/_this.smallSpace*i;
- _this.rander(v_startX+x,v_startY-_this.smallSpace*i);
- if(_this.smallSpace*i >= height){
- v_startX = v_startX+x;
- v_startY = v_startY-_this.smallSpace*i;
- clearInterval(intVal);
- draw_5();
- }
- },_this.speed);
- }
- var draw_5 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- // 每次偏移量
- var y = hypotenuseHeight/_this.smallSpace*i;
- _this.rander(v_startX-_this.smallSpace*i,v_startY-y);
- if(_this.smallSpace*i >= hypotenuseWidth){
- v_startX = v_startX-_this.smallSpace*i;
- v_startY = v_startY-y;
- clearInterval(intVal);
- draw_6();
- }
- },_this.speed);
- }
- var draw_6 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- // 每次偏移量
- var y = concave/(width/2/_this.smallSpace)*i;
- _this.rander(v_startX-_this.smallSpace*i,v_startY+y);
- if(_this.smallSpace*i >= width/2){
- clearInterval(intVal);
- callback();
- }
- },_this.speed);
- }
- draw_1();
- },
- // 画U
- draw_u: function(callback){
- var _this = this;
- var width=60,height=120;
- // 画U_|
- var draw_1 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- _this.rander(_this.startX,_this.startY+_this.smallSpace*i);
- if(_this.smallSpace*(i+2) >= height){
- clearInterval(intVal);
- draw_2();
- }
- },_this.speed);
- }
- // 画U_-
- var draw_2 = function(){
- var function1 = function(){
- var i = 0;
- // 处理的高度
- var cHeight = _this.smallSpace*2;
- var intVal = setInterval(function(){
- i++;
- /*
- * 每次偏移量
- * _this.smallSpace*2留的高度
- */
- var y = cHeight/(width/_this.smallSpace)*i;
- var y_point = _this.startY+(height-cHeight)+y;
- _this.rander(_this.startX+_this.smallSpace*i,y_point);
- if(_this.smallSpace*i >= width/2){
- clearInterval(intVal);
- function2();
- }
- },_this.speed);
- }
- var function2 = function(){
- var i = 0;
- var intVal = setInterval(function(){
- i++;
- // 处理的高度
- var cHeight = _this.smallSpace*2;
- /*
- * 每次偏移量
- * _this.smallSpace*2留的高度
- */
- var y = cHeight/(width/_this.smallSpace)*i;
- var y_point = _this.startY+(height-_this.smallSpace)-y;
- _this.rander(_this.startX+width/2+_this.smallSpace*i,y_point);
- if(_this.smallSpace*i >= width/2){
- clearInterval(intVal);
- draw_3();
- }
- },_this.speed);
- }
- function1();
- }
- // 画U_|
- var draw_3 = function(){
- var i = 0;
- // 处理的高度
- var cHeight = _this.smallSpace*2;
- var intVal = setInterval(function(){
- i++;
- var y_point = _this.startY+(height-cHeight)-_this.smallSpace*i;
- _this.rander(_this.startX+width,y_point);
- if(_this.smallSpace*(i+3) >= height){
- clearInterval(intVal);
- callback();
- }
- },_this.speed);
- }
- draw_1();
- }
- };
- Font.init();
- setInterval(function(){
- Canvas.anim.rander();
- },20);
- //Font.draw_v();
- Font.draw_i(function(){
- Font.startX += 150;
- Font.draw_v(function(){
- Font.startX += 120;
- Font.draw_u(function(){});
- });
- });
- </script>
canvas背景的更多相关文章
- canvas背景透明
var can=document.getElementById("canv"); c=can.getContext("2d"); c.globalAlpha=. ...
- canvas 背景填充
这儿介绍canvas的ccreatePattern函数, context.createPattern(Image,"repeat"),还可以repeat-x,reapter-y 还 ...
- Cocos Creator (webgl模式下怎么让canvas背景透明)
项目中构建出web-mobile包后,打开main.js 在main.js中加入如下两行即可让canvas变透明 cc.director.setClearColor(new cc.Color(0,0, ...
- canvas背景动画
偶然反驳可看到博客背景的炫酷效果 觉得很新奇就去查看了一下源码 结果在git上找到了 记录一下 https://github.com/hustcc/canvas-nest.js/
- JS - 使 canvas 背景透明
canvas = document.getElementById('canvas1'); var context = canvas.getContext('2d');context.fillStyle ...
- canvas背景粒子动态变化动画
var canvas = document.getElementById("cas"); var ctx = canvas.getContext("2d"); ...
- canvas 背景透明
theCanvas = document.getElementById('canvasOne');var context = theCanvas.getContext('2d');context.fi ...
- 使用Canvas绘制背景图
原文 http://www.imququ.com/post/use-canvas-as-background-image.html 最近iCloud Web的Beta版换了UI,整体风格变得和iOS ...
- 如何把canvas元素作为网站背景总结详解
如何把canvas元素作为网站背景总结详解 一.总结 一句话总结:最简单的做法是绝对定位并且z-index属性设置为负数. 1.如何把canvas元素作为网站背景的两种方法? a.设置层级(本例代码就 ...
随机推荐
- BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵快速幂)
题意 题目链接 Sol 不难发现吃人鱼的运动每\(12s\)一个周期 所以暴力建12个矩阵,放在一起快速幂即可 最后余下的部分暴力乘 #include<bits/stdc++.h> usi ...
- ANN神经网络——Sigmoid 激活函数编程练习 (Python实现)
# ---------- # # There are two functions to finish: # First, in activate(), write the sigmoid activa ...
- 【 Oral English】Pronunciation
一.英语音素 1.元音(元首,主要部分) 特点: a.无阻碍,拖很长认可辨别 b.声音响亮 2.辅音(重点,刻意练习) 特点: a.刻意阻碍 b.短促 二.汉语元素 1.音节:最小组成成分,而非元/辅 ...
- python基础(二)--多值参数以及类
1.多值参数函数 def 函数名(*args , **kwargs): ....... 多值参数函数顾名思义能够传入多个参数,args表示传入的元组,kwargs表示传入的字典 def functio ...
- androidtab
https://github.com/H07000223/FlycoTabLayout tensorflow https://github.com/topics/tensorflow-examples ...
- linux 下apche无法监听端口解决办法(Permission denied: make_sock: could not bind to address)
想建立一个测试用的虚拟主机,遇到了这个问题:[root@localhost html]# service httpd startStarting httpd: httpd: Could not rel ...
- js 浅拷贝有大用
如题 像浅拷贝.深拷贝这类的知识点我们应该都明白是怎么回事,大部分都是在面试的时候会被问到.大多让你实现一个深拷贝.现实中我们都用比较暴力直接的手段 JSON stringify. 一句话就搞定,管他 ...
- npm install 安装项目依赖,报错ERR! Unexpected end of JSON input while parsing near的方法汇总
问题描述: npm install 安装项目依赖的时候,有时会出现: ERR! Unexpected end of JSON input while parsing near 错误 原因: npm 的 ...
- Windows 10 X64 ISO 专业版&家庭版下载与永久激活
好久没有更新博客,算算时间,已经有4年了,好吧,今天突发奇想,想把今天安装Windows 10的过程给记录下来. 2015年的时候,微软就发布了Windows 10,当时正版的Win7.Win8都可以 ...
- 工作好搭档(四):铷安居 H-C81 电脑桌
引言:工欲善其事,必先利其器.码农十年,与电脑打了二十多年的交道,也配置了一些过得去的装备.资金有限,更希望所有的投入都在刀刃上.写工作好搭档系列,是晒考虑的原因.思路.经验和教训.欢迎并希望大伙能一 ...