需具备js基础知识以及canvas相关方法(可查阅相关文档)

下面是一篇有关js与canvas的背景特效

基于面向过程的思维

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
#canvas {
display: block;
background: #000;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
window.requestAnimationFrame =(function(){//解决定时器卡问题,使用帧动画
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback){
window.setInterval (callback,1000/60);
};
})();
//初始化变量
var canv=document.getElementsByName("canvas");
var cxt=canvas.getContext("2d");
var w,h;
var num=200;
var data=[];
var move={};
window.onresize=init;//在浏览器窗口变化时重置
init();
//获取浏览器宽高并使粒子随机分布
function init(){
canvas.width = window.innerWidth ;
canvas.height = window.innerHeight ;
w = canvas.width;
h = canvas.height;
for(var i=0;i<num;i++){
data[i]={x:Math.random()*w,y:Math.random()*h,cX:Math.random()*0.6-0.3,cY:Math.random()*0.6-0.3};
Cricle(data[i].x,data[i].y);
}
}
//绘制粒子
function Cricle(x,y){
cxt.save();
cxt.fillStyle ="pink";
cxt.beginPath ();
cxt.arc (x,y,0.5,Math.PI*2,false);
cxt.closePath ();
cxt.fill ();
cxt.restore ();
}
//自执行使粒子运动
!function draw(){
cxt.clearRect(0,0,w,h);//清除,防止粒子运动成线
for(var i=0;i<num;i++){
data[i].x+=data[i].cX;//粒子运动
data[i].y+=data[i].cY;
if(data[i].x>w||data[i].x<0) data[i].cX=-data[i].cX;//设置边界值判断防止粒子跑出边界
if(data[i].y>h||data[i].y<0) data[i].cY=-data[i].cY;
Cricle(data[i].x,data[i].y);
for(var j=i+1;j<num;j++){
//使粒子连线
if((data[i].x-data[j].x)*(data[i].x-data[j].x)+(data[i].y-data[j].y)*(data[i].y-data[j].y)<=50*50){
line(data[i].x,data[i].y,data[j].x,data[j].y,false);
}
//使粒子与鼠标连线
if(move.x){
if((data[i].x-move.x)*(data[i].x-move.x)+(data[i].y-move.y)*(data[i].y-move.y)<=100*100){
line(data[i].x,data[i].y,move.x,move.y,true);
}
}
}
}
window.requestAnimationFrame(draw);//定时器
// setInterval(function(){
// draw();
// },130);
}();
//使粒子的连线颜色渐变
function line(x1,y1,x2,y2,isMove){
var color=cxt.createLinearGradient(x1,y1,x2,y2);
if(!isMove){
color.addColorStop(0,"yellow");
color.addColorStop(1,"pink");
}else{
color.addColorStop(0,"#fff");
color.addColorStop(1,"#0bd2dd");
}
cxt.save();
cxt.strokeStyle=color;
cxt.beginPath();
cxt.moveTo(x1,y1);
cxt.lineTo(x2,y2);
cxt.stroke();
cxt.restore();
}
//鼠标移入与粒子连线
document.onmousemove=function(e){
move.x= e.clientX;
move.y= e.clientY;
}
</script>
</body>
</html>

canvas之背景特效的更多相关文章

  1. canvas星空背景特效+CSS旋转相册学习

    今天在看帖子的时候,看到了个有趣的css旋转相册,刚好之前做了一个星空背景dome,这里给大家分享下代码: 旋转相册参考:https://blog.csdn.net/gitchatxiaomi/art ...

  2. 一款由html5 canvas实现五彩小圆圈背景特效

    之前介绍了好几款html5 canvas实现的特效.今天要为大家介绍一款由html5 canvas实现五彩小圆圈背景特效.五彩的小圆圈渐显渐失的特效.效果图如下: 在线预览   源码下载 html代码 ...

  3. 使用Canvas绘制背景图

    原文  http://www.imququ.com/post/use-canvas-as-background-image.html 最近iCloud Web的Beta版换了UI,整体风格变得和iOS ...

  4. HTML5 canvas生成图片马赛克特效插件

    HTML5 canvas生成图片马赛克特效插件 简要教程 这是一款使用html5 canvas来将图片制作成马赛克效果的js插件.该插件的灵感来自于美国肖像画家Chuck Close.已经有人使用这个 ...

  5. Canvas与javaScript特效笔记

    第六章   Canvas与javaScript特效笔记 q  <canvas>标签的用途 HTML5 canvas 提供了通过 JavaScript 绘制图形的方法,此方法使用简单但功能强 ...

  6. CANVAS模仿龙卷风特效

    大学时候,有一段时间对flash比较感兴趣.去图书馆借了一本很厚很厚的falsh书籍. 翻了几页之后,就再没有往后看过.印象比较深的是作者说他用flash完成了一个龙卷风效果. 一直到现在我也没有看到 ...

  7. [Canvas]动态背景

    欲查看动态效果请点击下载代码再用Chrome或Firefox打开index.html 图例: 代码: <!DOCTYPE html> <html lang="utf-8&q ...

  8. WEB入门.八 背景特效

    学习内容 background属性 CSS Sprite 技术 滑动门技术 能力目标 使用background设置网页背景 使用Sprites制作平滑投票特效 使用滑动门技术实现Tab菜单 本章简介 ...

  9. 结合canvas做雨滴特效

    雨滴特效 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

随机推荐

  1. sqlite 时间函数及时间处理

    SQLite分页显示:Select * From news order by id desc Limit 10 Offset 10这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么 ...

  2. C# mvc读取模板并修改上传到web

    C# mvc读取模板并修改上传到web 后台: public FileResult GetXls() { FileStream fs = new FileStream(System.Web.HttpC ...

  3. css零星进阶知识点

    display: inline-block: 可设置宽高的行级元素,如果inline-block元素本行无法显示完全的话则整个换行而不是里面的单词换行 position: 设置参照物,top,left ...

  4. 关于IE8下media query兼容的解决方案探讨

    在国内IE8至少还占有20%的市场份额,所以在做网站时,必须得为这部分用户特殊兼容考虑. 一方面IE8上面很多css3定义的标签不能使用,另外一方面javascript的addEventListene ...

  5. jQuery的事件绑定和解绑

    1.绑定事件 $('获取的标签对象').bind('要操作的方法,  {操作的内容  是字典的形式},function(){} ') 语法: bind(type,data,fn) 描述:为每一个匹配元 ...

  6. java img图片转pdf 工具类

    package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileNotFoundE ...

  7. Maven学习---使用maven进行项目构建

    1. 使用maven进行项目构建 MyEclipse 自带maven 插件 Eclipse 需要单独安装maven插件 1.1. Maven 在企业中怎么用的 ? Maven : 项目构建工具 ,进行 ...

  8. Hadoop学习---Hadoop的深入学习

    Hadoop生态圈 存储数据HDFS(Hadoop Distributed File System),运行在通用硬件上的分布式文件系统.具有高度容错性.高吞吐量的的特点. 处理数据MapReduce, ...

  9. laravel5.5 自定义验证规则——手机验证RULE

    相信很多小伙伴和我一样烦恼,laravel没有自带手机号的验证,每次验证手机号都要写正则这类的规则,每次都是repeat yourself!违背了编码的一个原则,就是Don't repeat your ...

  10. January 14 2017 Week 2nd Saturday

    Don't try so hard, the best things come when you least expect them to. 不要着急,最好的总会在最不经意时出现. The secon ...