html5如何写出圆背景,利用HTML5实现Canvas虚幻圆点背景特效
特效描述:利用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虚幻圆点背景特效相关推荐
- 苹果手机html5摇一摇游戏戏码,利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖,html5devicemotion...
利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖,html5devicemotion 摇一摇JS脚本逻辑: 接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的 ...
- html5实现粒子效果的文字,利用HTML5实现Canvas粒子文字特效
特效描述:利用HTML5实现 Canvas 粒子文字特效.利用HTML5实现Canvas粒子文字特效 代码结构 1. HTML代码 change /*jshint esversion:6*/ var ...
- html5 可旋转的三维树形结构,利用HTML5实现勾股树植物生长动画特效
特效描述:利用HTML5实现 勾股树 植物生长 动画特效.利用HTML5实现勾股树植物生长动画特效 代码结构 1. HTML代码 const canvas = document.querySelect ...
- HTML5 + Javascript 写出一个钢琴
首发:GitHubClub 原文:juejin.im/post/6879708939190009869 学生时代的我们如果有像郎朗一样的琴技,想必追起女生会非常的容易,但在以前,一架钢琴对普通家庭来说 ...
- html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...
一.引入相关js 二.js代码 // 单次位置请求执行的函数 function getLocation(){ navigator.geolocation.getCurrentPosition(mapI ...
- html5简单制作效果,分享一个利用HTML5制作的海浪效果代码-H5教程
在前面简单讲述了一下HTML里的Canvas,这次根据Canvas完成了"海浪效果"(水波上升). (O(∩_∩)O哈哈哈~作者我能看这个动画看一下午) 上升水波.gif动画分析 ...
- 如何在html5中实现多圆,JavaScript与html5如何实现canvas绘制圆形图案的方法介绍
这篇文章主要介绍了js+html5实现canvas绘制圆形图案的方法,涉及html5图形绘制的基础技巧,需要的朋友可以参考下 本文实例讲述了js+html5实现canvas绘制圆形图案的方法.分享给大 ...
- 鼠标右击 html5,认识HTML--写出第一个简易网页 -------16岁的小前端
在前面我们学习中我们认识到到HTML的[我要做网页]和一些基本的结构: -----------------------声明文档类型为html5 -----------------------HTML标 ...
- 利用HTML5+CSS3+JS实现简单的钟表
HTML5+CSS3+JS实现动态时钟 利用HTML5+CSS3+JS实现简单的钟表,仅供参考学习 效果图: 在线效果预览 思路: 1. 先定义一个类名为timepiece的圆表表盘 HTML: &l ...
最新文章
- 【剑指offer】顺时针打印矩阵
- 【开源项目】保存YUV420数据到本地
- vim中的jk为什么是上下_JK的完整形式是什么?
- php怎么修改div自带属性吗,修改html 属性,css样式。
- 这个城市快递外卖小哥将配电子号牌了,违法2起以上停止派单
- jquery系列教程3-DOM操作全解
- Python运行时报错 ModuleNotFoundError: No module named ‘exceptions‘
- 马化腾惊现Leetcode每天刷题?为啥大佬都这么努力!
- 项目实战第一讲:如何优雅地记录操作日志
- elementui表格序号自增
- Json文件简单读写
- matlab波形转换,matlab波形图怎么转换为矢量图并导出?
- java课设迷宫游戏_Java课程设计走迷宫.doc
- 无线通信与编码_MATLAB实现OFDM载波频偏估计_含仿真代码
- 数据源EPMSSqlDataSource的使用
- 微信公众号发送客服消息(文本、图文)和模板消息
- 会计专业应用计算机操作,中职会计专业计算机应用基础教学
- CentOS7.3下Zabbix3.5之微信报警配置
- 【JAVA】网页版登录注册系统2.0
- iHerb中国这个app怎么样?iHerb中国邮政EMS与顺丰速运区别点在哪里?