特效描述:利用HTML5实现 Canvas 虚幻圆点 背景特效。利用HTML5实现Canvas虚幻圆点背景特效

代码结构

1. 引入JS

2. HTML代码

(function($){

var canvas = $('#bg').children('canvas'),

background = canvas[0],

foreground1 = canvas[1],

foreground2 = canvas[2],

config = {

circle: {

amount: 18,

layer: 3,

color: [157, 97, 207],

alpha: 0.3

},

line: {

amount: 12,

layer: 3,

color: [255, 255, 255],

alpha: 0.3

},

speed: 0.5,

angle: 20

};

if (background.getContext){

var bctx = background.getContext('2d'),

fctx1 = foreground1.getContext('2d'),

fctx2 = foreground2.getContext('2d'),

M = window.Math, // Cached Math

degree = config.angle/360*M.PI*2,

circles = [],

lines = [],

wWidth, wHeight, timer;

requestAnimationFrame = window.requestAnimationFrame ||

window.mozRequestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.msRequestAnimationFrame ||

window.oRequestAnimationFrame ||

function(callback, element) { setTimeout(callback, 1000 / 60); };

cancelAnimationFrame = window.cancelAnimationFrame ||

window.mozCancelAnimationFrame ||

window.webkitCancelAnimationFrame ||

window.msCancelAnimationFrame ||

window.oCancelAnimationFrame ||

clearTimeout;

var setCanvasHeight = function(){

wWidth = $(window).width();

wHeight = $(window).height(),

canvas.each(function(){

this.width = wWidth;

this.height = wHeight;

});

};

var drawCircle = function(x, y, radius, color, alpha){

var gradient = fctx1.createRadialGradient(x, y, radius, x, y, 0);

gradient.addColorStop(0, 'rgba('+color[0]+','+color[1]+','+color[2]+','+alpha+')');

gradient.addColorStop(1, 'rgba('+color[0]+','+color[1]+','+color[2]+','+(alpha-0.1)+')');

fctx1.beginPath();

fctx1.arc(x, y, radius, 0, M.PI*2, true);

fctx1.fillStyle = gradient;

fctx1.fill();

};

var drawLine = function(x, y, width, color, alpha){

var endX = x+M.sin(degree)*width,

endY = y-M.cos(degree)*width,

gradient = fctx2.createLinearGradient(x, y, endX, endY);

gradient.addColorStop(0, 'rgba('+color[0]+','+color[1]+','+color[2]+','+alpha+')');

gradient.addColorStop(1, 'rgba('+color[0]+','+color[1]+','+color[2]+','+(alpha-0.1)+')');

fctx2.beginPath();

fctx2.moveTo(x, y);

fctx2.lineTo(endX, endY);

fctx2.lineWidth = 3;

fctx2.lineCap = 'round';

fctx2.strokeStyle = gradient;

fctx2.stroke();

};

var drawBack = function(){

bctx.clearRect(0, 0, wWidth, wHeight);

var gradient = [];

gradient[0] = bctx.createRadialGradient(wWidth*0.3, wHeight*0.1, 0, wWidth*0.3, wHeight*0.1, wWidth*0.9);

gradient[0].addColorStop(0, 'rgb(0, 26, 77)');

gradient[0].addColorStop(1, 'transparent');

bctx.translate(wWidth, 0);

bctx.scale(-1,1);

bctx.beginPath();

bctx.fillStyle = gradient[0];

bctx.fillRect(0, 0, wWidth, wHeight);

gradient[1] = bctx.createRadialGradient(wWidth*0.1, wHeight*0.1, 0, wWidth*0.3, wHeight*0.1, wWidth);

gradient[1].addColorStop(0, 'rgb(0, 150, 240)');

gradient[1].addColorStop(0.8, 'transparent');

bctx.translate(wWidth, 0);

bctx.scale(-1,1);

bctx.beginPath();

bctx.fillStyle = gradient[1];

bctx.fillRect(0, 0, wWidth, wHeight);

gradient[2] = bctx.createRadialGradient(wWidth*0.1, wHeight*0.5, 0, wWidth*0.1, wHeight*0.5, wWidth*0.5);

gradient[2].addColorStop(0, 'rgb(40, 20, 105)');

gradient[2].addColorStop(1, 'transparent');

bctx.beginPath();

bctx.fillStyle = gradient[2];

bctx.fillRect(0, 0, wWidth, wHeight);

};

var animate = function(){

var sin = M.sin(degree),

cos = M.cos(degree);

if (config.circle.amount > 0 && config.circle.layer > 0){

fctx1.clearRect(0, 0, wWidth, wHeight);

for (var i=0, len = circles.length; i

var item = circles[i],

x = item.x,

y = item.y,

radius = item.radius,

speed = item.speed;

if (x > wWidth + radius){

x = -radius;

} else if (x < -radius){

x = wWidth + radius

} else {

x += sin*speed;

}

if (y > wHeight + radius){

y = -radius;

} else if (y < -radius){

y = wHeight + radius;

} else {

y -= cos*speed;

}

item.x = x;

item.y = y;

drawCircle(x, y, radius, item.color, item.alpha);

}

}

if (config.line.amount > 0 && config.line.layer > 0){

fctx2.clearRect(0, 0, wWidth, wHeight);

for (var j=0, len = lines.length; j

var item = lines[j],

x = item.x,

y = item.y,

width = item.width,

speed = item.speed;

if (x > wWidth + width * sin){

x = -width * sin;

} else if (x < -width * sin){

x = wWidth + width * sin;

} else {

x += sin*speed;

}

if (y > wHeight + width * cos){

y = -width * cos;

} else if (y < -width * cos){

y = wHeight + width * cos;

} else {

y -= cos*speed;

}

item.x = x;

item.y = y;

drawLine(x, y, width, item.color, item.alpha);

}

}

timer = requestAnimationFrame(animate);

};

var createItem = function(){

circles = [];

lines = [];

if (config.circle.amount > 0 && config.circle.layer > 0){

for (var i=0; i

for (var j=0; j

circles.push({

x: M.random() * wWidth,

y: M.random() * wHeight,

radius: M.random()*(20+j*5)+(20+j*5),

color: config.circle.color,

alpha: M.random()*0.2+(config.circle.alpha-j*0.1),

speed: config.speed*(1+j*0.5)

});

}

}

}

if (config.line.amount > 0 && config.line.layer > 0){

for (var m=0; m

for (var n=0; n

lines.push({

x: M.random() * wWidth,

y: M.random() * wHeight,

width: M.random()*(20+n*5)+(20+n*5),

color: config.line.color,

alpha: M.random()*0.2+(config.line.alpha-n*0.1),

speed: config.speed*(1+n*0.5)

});

}

}

}

cancelAnimationFrame(timer);

timer = requestAnimationFrame(animate);

drawBack();

};

$(document).ready(function(){

setCanvasHeight();

createItem();

});

$(window).resize(function(){

setCanvasHeight();

createItem();

});

}

})(jQuery);

html5如何写出圆背景,利用HTML5实现Canvas虚幻圆点背景特效相关推荐

  1. 苹果手机html5摇一摇游戏戏码,利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖,html5devicemotion...

    利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖,html5devicemotion 摇一摇JS脚本逻辑: 接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的 ...

  2. html5实现粒子效果的文字,利用HTML5实现Canvas粒子文字特效

    特效描述:利用HTML5实现 Canvas 粒子文字特效.利用HTML5实现Canvas粒子文字特效 代码结构 1. HTML代码 change /*jshint esversion:6*/ var ...

  3. html5 可旋转的三维树形结构,利用HTML5实现勾股树植物生长动画特效

    特效描述:利用HTML5实现 勾股树 植物生长 动画特效.利用HTML5实现勾股树植物生长动画特效 代码结构 1. HTML代码 const canvas = document.querySelect ...

  4. HTML5 + Javascript 写出一个钢琴

    首发:GitHubClub 原文:juejin.im/post/6879708939190009869 学生时代的我们如果有像郎朗一样的琴技,想必追起女生会非常的容易,但在以前,一架钢琴对普通家庭来说 ...

  5. html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...

    一.引入相关js 二.js代码 // 单次位置请求执行的函数 function getLocation(){ navigator.geolocation.getCurrentPosition(mapI ...

  6. html5简单制作效果,分享一个利用HTML5制作的海浪效果代码-H5教程

    在前面简单讲述了一下HTML里的Canvas,这次根据Canvas完成了"海浪效果"(水波上升). (O(∩_∩)O哈哈哈~作者我能看这个动画看一下午) 上升水波.gif动画分析 ...

  7. 如何在html5中实现多圆,JavaScript与html5如何实现canvas绘制圆形图案的方法介绍

    这篇文章主要介绍了js+html5实现canvas绘制圆形图案的方法,涉及html5图形绘制的基础技巧,需要的朋友可以参考下 本文实例讲述了js+html5实现canvas绘制圆形图案的方法.分享给大 ...

  8. 鼠标右击 html5,认识HTML--写出第一个简易网页 -------16岁的小前端

    在前面我们学习中我们认识到到HTML的[我要做网页]和一些基本的结构: -----------------------声明文档类型为html5 -----------------------HTML标 ...

  9. 利用HTML5+CSS3+JS实现简单的钟表

    HTML5+CSS3+JS实现动态时钟 利用HTML5+CSS3+JS实现简单的钟表,仅供参考学习 效果图: 在线效果预览 思路: 1. 先定义一个类名为timepiece的圆表表盘 HTML: &l ...

最新文章

  1. 【剑指offer】顺时针打印矩阵
  2. 【开源项目】保存YUV420数据到本地
  3. vim中的jk为什么是上下_JK的完整形式是什么?
  4. php怎么修改div自带属性吗,修改html 属性,css样式。
  5. 这个城市快递外卖小哥将配电子号牌了,违法2起以上停止派单
  6. jquery系列教程3-DOM操作全解
  7. Python运行时报错 ModuleNotFoundError: No module named ‘exceptions‘
  8. 马化腾惊现Leetcode每天刷题?为啥大佬都这么努力!
  9. 项目实战第一讲:如何优雅地记录操作日志
  10. elementui表格序号自增
  11. Json文件简单读写
  12. matlab波形转换,matlab波形图怎么转换为矢量图并导出?
  13. java课设迷宫游戏_Java课程设计走迷宫.doc
  14. 无线通信与编码_MATLAB实现OFDM载波频偏估计_含仿真代码
  15. 数据源EPMSSqlDataSource的使用
  16. 微信公众号发送客服消息(文本、图文)和模板消息
  17. 会计专业应用计算机操作,中职会计专业计算机应用基础教学
  18. CentOS7.3下Zabbix3.5之微信报警配置
  19. 【JAVA】网页版登录注册系统2.0
  20. iHerb中国这个app怎么样?iHerb中国邮政EMS与顺丰速运区别点在哪里?

热门文章

  1. Mac视频播放器Elmedia Video Player Pro for Mac
  2. 基于python对密立根油滴实验数据处理改进
  3. [答疑]运维记录台账本子识别为一个现状业务实体,妥否
  4. 2021年度总结 2022学习规划
  5. 情感分析中处理否定问题的伪代码
  6. 转:你必须知道的地理坐标系和投影坐标系
  7. 5G小基站国产化超五成,美国芯片仅占1%,难怪美国芯片难卖了
  8. WinRAR5.6 去广告代码教程分享
  9. 秒速五厘米(快速二分跳跃查找答案)
  10. 准大四学生七月青软实训总结