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
相关文章
19 Jan 2017
这是一款使用HTML5 Canvas制作的黑板特效,该黑板特效支持手机移动端,它能模拟使用粉笔在黑板上写字的效果。该黑板特效的特点还有:
03 Jul 2018
这是一个款绚丽的HTML5 Canvas动画,它将模拟的是我们生活中烟花绽放的动画特效,效果非常逼真,下面我们来简单分析一下实现这款HTML5烟花特效的过程及代码,感兴趣的小伙伴们可以参考一下
08 Mar 2017
HTML5真的是一个相当出色的Web技术,它不仅可以让你更加方便地操纵页面元素,而且可以通过canvas实现更多的动画特效,引进HTML5标准后,CSS3也就可以发挥更大的作用。本文主要介绍了一些基于HTML5 Canvas的动画特效,分享给大家,希望大家喜欢。 1、HTML5 Canvas瀑布动画 超逼真 这是一个很逼真的HTML5瀑布动画,基于Canvas实现的,效果相当酷。 在线演示源码下载 2、HTML5 Canvas彩色..
18 Jan 2017
jquery-fireworks是一款基于HTML5 Canvas的逼真烟花特效jQuery插件。该插件使用简单,并可自由进行配置。它可以在一个div容器中生成逼真的燃放烟花效果。
18 Jan 2017
这是一款使用javascript和HTML5 Canvas来制作的超梦幻网页背景特效。该网页背景特效使用两个canvas元素进行重叠,制作出圆形光影运动的梦幻效果,非常的炫酷。
18 Jan 2017
这是一款基于jquery和HTML5 Canvas的幸运大奖盘特效。该幸运大奖品特效支持移动端,它通过动态构造Canvas元素来生成大奖盘,并通过jquery代码来随机获取奖品。
02 Apr 2018
这次的这篇文章给大家分享的内容是基于 HTML5 Canvas 实现的文字动画特效,非常的而是用,有需要的朋友可以用来参考一下
16 May 2016
这是一个款绚丽的HTML5 Canvas动画,它将模拟的是我们生活中烟花绽放的动画特效,效果非常逼真,下面我们来简单分析一下实现这款HTML5烟花特效的过程及代码,感兴趣的小伙伴们可以参考一下
Hot Tools
HTML5 Canvas爱心飘动动画特效
HTML5 Canvas爱心飘动动画特效是一款直接用浏览器打开可以看到一颗心的生成动画。
H5熊猫弹跳小游戏源码
html5手机熊猫也疯狂小游戏源代码。游戏说明:长按屏幕调整熊猫弹簧的强度,跳到石柱上。掉到河里游戏结束。
html5情人节盒子动画特效
基于svg绘制情人节一个个爱心盒子礼物打开动画,爱心盒子动画特效。
H5 3D滚球游戏源码
html5酷炫3D彩球滚动手机游戏代码下载。游戏介绍:一个彩色圆球滚动,通过鼠标或手机触屏拖动来控制彩球的运行当前线路轨迹。这是一款简单易操作的手机小游戏源码。