HTML5+Canvas的黑洞特效
<头>
<元字符集=“utf-8”>
<风格>
帆布 {### 位置:绝对;
顶部:0;
左:0;
}
</风格>
</头>
<正文>
<脚本>
让 w = c.width = window.innerWidth;
让 h = c.height = window.innerHeight;
const ctx = c.getContext('2d');
常量选项 = {
十六进制长度:30,
lenFn: ({ len, t }) =>
len + Math.sin(t),
radFn: ({ rad, len, t, 兴奋 }) =>
rad + (兴奋 + opts.propFn({ len, t }))*2 / 4,
propFn: ({ len, t }) =>;
len / opts.hexLength / 10 - t,
兴奋Fn: ({ len, t }) =>
Math.sin(opts.propFn({ len, t }))**2,
colorFn: ({ rad, 兴奋度, t }) =>
`hsl(${rad / Math.TAU * 360 + t}, ${兴奋 * 100}%, ${20 + 兴奋 * 50}%)`,
时间步长: .01,
随机夹具:8,
重绘颜色: 'rgba(0,0,0,.1)'
};
让勾号 = 0;
数学.TAU = 6.28318530717958647692;
常量顶点 = [];
顶点类 {
构造函数({ x, y }) {
this.len = Math.sqrt(x*x + y*y);
this.rad = Math.acos(x / this.len) * (y > 0 ? 1 : -1) + .13;
this.prevPoint = { x, y };
}
步() {### const兴奋 = opts.excitementFn({ len: this.len, t: 勾选 });
常量参数 = {
len: this.len,
拉德:这个.rad,
t:勾选,
激动### };
const nextLen = opts.lenFn(param);
const nextRad = opts.radFn(param);
const color = opts.colorFn(param);
ctx.描边样式 = 颜色;
ctx.lineWidth = 兴奋 + .2;
ctx.beginPath();
ctx.moveTo(this.prevPoint.x, this.prevPoint.y);
this.prevPoint.x = nextLen * Math.cos(nextRad) +
Math.random() * (1-兴奋)**2 * opts.randomJig * 2 - opts.randomJig;
this.prevPoint.y = nextLen * Math.sin(nextRad) +
Math.random() * (1-兴奋)**2 * opts.randomJig * 2 - opts.randomJig;
ctx.lineTo(this.prevPoint.x, this.prevPoint.y);
ctx.中风();
}
静态生成(){
顶点.长度 = 0;
const hexCos = Math.cos(Math.TAU / 12) * opts.hexLength;
const hexSin = Math.sin(Math.TAU / 12) * opts.hexLength;
让alternanceX = false;
for(令 x = 0; x < w; x += hexCos) {
让alternance = alternanceX = !alternanceX;
for(let y = 0; y < h; y += hexSin + opts.hexLength) {
交替 = !交替;
顶点.push(新顶点({
x: x - w / 2,
y: y + 交替 * hexSin - h / 2
}))
}
}
}
}
顶点.gen();
ctx.fillStyle = '#222';
ctx.fillRect(0, 0, w, h);
const anim = () =>; {
# window.requestAnimationFrame(anim);
勾选 += opts.timeStep;
ctx.fillStyle = opts.repaintColor;
ctx.fillRect(0, 0, w, h);
ctx.translate(w/2, h/2);
vertices.forEach((vertex) => vertex.step());
ctx.translate(-w/2, -h/2);
}
动画();
window.addEventListener('调整大小', () => {
w = c.width = window.innerWidth;
h = c.height = window.innerHeight;
顶点.gen();
勾选= 0;
ctx.fillStyle = '#222';
ctx.fillRect(0, 0, w, h);
})
</脚本>
</body>
</html>
这是一个HTML5+Canvas的特效,需要的朋友可以直接下载使用,更多特效代码尽在PHP中文网。
本站所有资源均由网友贡献或各大下载网站转载。请自行检查软件的完整性!本站所有资源仅供学习参考。请不要将它们用于商业目的。否则,一切后果由您负责!如有侵权,请联系我们删除。联系方式:admin@php.cn
相关文章

15 Jun 2017
基于HTML5的应用现在已经非常广泛,今天我们就来向大家分享20款非常绚丽的HTML5/CSS3应用插件。希望大家喜欢并分享给你的好友们。1、HTML5视频破碎重组特效 强大视觉冲击HTML5视频播放器很多,但是HTML5视频特效还是很少见的,这款HTML5视频破碎重组特效非常刺激,给人强大的视觉冲击。点击视频任意地方,HTML5将会将这些区域击碎,过一段时间,这些被击碎的视频碎片又将自动重新组合...

05 Jun 2018
这篇文章主要介绍了纯HTML5 CSS3制作图片旋转,HTML5结合CSS3 实现的一些动画特效,实现起来比较容易,感兴趣的小伙伴们可以参考一下

28 Dec 2024
HTML5 中对象的存储本地和会话存储查询:HTML5 的 localStorage 和 sessionStorage 能够有效存储原始数据...

07 Jun 2017
近年来 HTML5 和 CSS3 发展迅速,国内外不乏一些大站,酷站都在使用最新的技术,各家厂商的浏览器对它们的兼容性越来越好。CSS3中有一个强大的属性 Transform。有了这个特性,各种特效轻松搞定。

08 Sep 2017
JS时间特效最常用的三款 ,为大家分享的JS时间特效代码如下 <head> <title>3个最常用的JS时间特效</title> </head> <body> <table width="298" border="0" cellspacing="0" cellpadding="


Hot Tools

HTML5 Canvas爱心飘动动画特效
HTML5 Canvas爱心飘动动画特效是一款直接用浏览器打开可以看到一颗心的生成动画。

H5熊猫弹跳小游戏源码
html5手机熊猫也疯狂小游戏源代码。游戏说明:长按屏幕调整熊猫弹簧的强度,跳到石柱上。掉到河里游戏结束。

html5情人节盒子动画特效
基于svg绘制情人节一个个爱心盒子礼物打开动画,爱心盒子动画特效。

H5 3D滚球游戏源码
html5酷炫3D彩球滚动手机游戏代码下载。游戏介绍:一个彩色圆球滚动,通过鼠标或手机触屏拖动来控制彩球的运行当前线路轨迹。这是一款简单易操作的手机小游戏源码。
