HTML5+Canvas的黑洞特效

不要失去你的彩虹

canvas {

position: absolute;

top: 0;

left: 0;

}

let w = c.width = window.innerWidth;

let h = c.height = window.innerHeight;

const ctx = c.getContext('2d');

const opts = {

hexLength: 30,

lenFn: ({ len, t }) =>

len + Math.sin(t),

radFn: ({ rad, len, t, excitement }) =>

rad + (excitement + opts.propFn({ len, t }))*2 / 4,

propFn: ({ len, t }) =>

len / opts.hexLength / 10 - t,

excitementFn: ({ len, t }) =>

Math.sin(opts.propFn({ len, t }))**2,

colorFn: ({ rad, excitement, t }) =>

`hsl(${rad / Math.TAU * 360 + t}, ${excitement * 100}%, ${20 + excitement * 50}%)`,

timeStep: .01,

randomJig: 8,

repaintColor: 'rgba(0,0,0,.1)'

};

let tick = 0;

Math.TAU = 6.28318530717958647692;

const vertices = [];

class Vertex {

constructor({ 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 };

}

step() {

const excitement = opts.excitementFn({ len: this.len, t: tick });

const param = {

len: this.len,

rad: this.rad,

t: tick,

excitement

};

const nextLen = opts.lenFn(param);

const nextRad = opts.radFn(param);

const color = opts.colorFn(param);

ctx.strokeStyle = color;

ctx.lineWidth = excitement + .2;

ctx.beginPath();

ctx.moveTo(this.prevPoint.x, this.prevPoint.y);

this.prevPoint.x = nextLen * Math.cos(nextRad) +

Math.random() * (1-excitement)**2 * opts.randomJig * 2 - opts.randomJig;

this.prevPoint.y = nextLen * Math.sin(nextRad) +

Math.random() * (1-excitement)**2 * opts.randomJig * 2 - opts.randomJig;

ctx.lineTo(this.prevPoint.x, this.prevPoint.y);

ctx.stroke();

}

static gen() {

vertices.length = 0;

const hexCos = Math.cos(Math.TAU / 12) * opts.hexLength;

const hexSin = Math.sin(Math.TAU / 12) * opts.hexLength;

let alternanceX = false;

for(let x = 0; x < w; x += hexCos) {

let alternance = alternanceX = !alternanceX;

for(let y = 0; y < h; y += hexSin + opts.hexLength) {

alternance = !alternance;

vertices.push(new Vertex({

x: x - w / 2,

y: y + alternance * hexSin - h / 2

}))

}

}

}

}

Vertex.gen();

ctx.fillStyle = '#222';

ctx.fillRect(0, 0, w, h);

const anim = () => {

window.requestAnimationFrame(anim);

tick += 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);

}

anim();

window.addEventListener('resize', () => {

w = c.width = window.innerWidth;

h = c.height = window.innerHeight;

Vertex.gen();

tick = 0;

ctx.fillStyle = '#222';

ctx.fillRect(0, 0, w, h);

})

这是一个HTML5+Canvas的黑洞特效,需要的朋友可以直接下载使用,更多特效代码尽在PHP中文网。

申明:本站所有资源都是转载各大下载站,或由网友投稿发布,请自行检测软件的完整性,如有侵权请联系我们删除下架,联系方式:admin@php.cn

html黑洞效果,HTML5+Canvas的黑洞特效相关推荐

  1. html5字体动画效果,7款超华丽的HTML5 Canvas文字动画特效

    原标题:7款超华丽的HTML5 Canvas文字动画特效 文字是网页中最为常见的元素之一,当然我们使用最多的就是调整文字的颜色.大小等基本属性.有时候我们在一些活动页面上需要展示特别样式的文字效果,这 ...

  2. html酷炫电子时钟效果,逼真的HTML5 canvas模拟时钟特效

    插件描述:thooClock是一款效果非常逼真的HTML5 canvas模拟时钟特效.该时钟特效使用jQuery和HTML5 Canvas API来制作,模拟现实生活中的时钟.并且它还具有定时闹钟的功 ...

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

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

  4. ae制h5文字动画_7款超华丽的HTML5 Canvas文字动画特效

    本文作者html5tricks,转载请注明出处 文字是网页中最为常见的元素之一,当然我们使用最多的就是调整文字的颜色.大小等基本属性.有时候我们在一些活动页面上需要展示特别样式的文字效果,这时候我们就 ...

  5. html5黑板源码,支持移动端的HTML5 Canvas逼真黑板特效

    简要教程 这是一款使用HTML5 Canvas制作的黑板特效,该黑板特效支持手机移动端,它能模拟使用粉笔在黑板上写字的效果.该黑板特效的特点还有:使用鼠标左键能够在黑板上写字. 使用鼠标右键能够擦除已 ...

  6. html 星空效果,html5 canvas炫酷旋转银河系星空背景特效

    这是一款html5 canvas炫酷旋转银河系星空背景特效.该特效通过canvas来绘制银河系星盘,并制作星系旋转的效果,非常炫酷. 使用方法 HTML结构 该旋转银河系星空背景特效的HTML结果只需 ...

  7. html 穿越星空效果,html5 canvas绚丽3d星空飞行穿梭动画特效

    简要教程 这是一款使用 html5 canvas和 jQuery 制作的绚丽3d星空飞行穿梭动画特效.该3d星空飞行特效模拟了飞船在宇宙星空中快速穿梭的动画场景,效果非常逼真. HTML结构 HTML ...

  8. html5 星空扩散效果,HTML5 canvas实现炫酷旋转银河系星空背景特效解析

    简要教程 这是一款html5 canvas炫酷旋转银河系星空背景特效.该特效通过canvas来绘制银河系星盘,并制作星系旋转的效果,非常炫酷. 使用方法 HTML结构 该旋转银河系星空背景特效的HTM ...

  9. html 流动效果,html5 canvas流动的海浪特效

    特效描述:html5canvas 流动的海浪特效.html5 canvas流动的海浪特效 代码结构 1. 引入JS 2. HTML代码 'use strict'; var gui = new dat. ...

  10. html 画动画效果,html5 canvas绘制曲线动画特效

    特效描述:html5 canvas绘制 曲线动画特效. 代码结构 1. HTML代码 Balls Size Speed Delay Go! Presets: Atomic Flower Spiro Y ...

最新文章

  1. CSS3选择器 :read-only选择器 CSS3选择器 :read-write选择器
  2. 排除瓶颈和加速django项目
  3. vueh5调用摄像头拍照_潜望式拍照5G手机盘点:售价相差数千元 究竟怎么选?
  4. C++算法一些常用的stl函数
  5. Win11如何查看电池情况 Win11查看电池情况的方法
  6. 利用SQL移动硬盘文件(转于zjcxc)
  7. 北方方言的拼音及解释
  8. Sublime Text编写80×86汇编.asm文件的语法高亮插件
  9. Thinking in Java 11.13 Foreach与迭代器
  10. java读取串口设备信息_Java--串口之间的通信及扫描枪的读取
  11. 实验一 201521410003 15网一 叶萌熙
  12. [prolog 基础系列] Prolog 的使用以及 Knowledge Base
  13. Diy-Scratch(4) 大家来找茬
  14. 独立董事、内部董事、执行董事、外部董事、非执行董事概念
  15. android EditText 设置弹出数字输入法键盘
  16. iPad/iPhone内存管理五之如何确定对象返回的值是autorelease
  17. 优秀网页设计:25个精美的旅游网站设计示例
  18. 人类又被AI碾压,这次是星际争霸
  19. Android app更新模块
  20. python知识补充

热门文章

  1. B Start - 哔哩哔哩校招入职成长营
  2. 计算机房档案管理,机房档案管理制度
  3. java 根据条码字体_barcode4j使用自定义字体生成条形码
  4. Ubuntu安装微软雅黑字体
  5. Asterisk的体系架构
  6. 联想启天M415台式机安装esxi找不到网卡的解决方法
  7. win10任务栏太宽而且调不了_win10系统任务栏变宽了的修复方法
  8. Android Studio一键汉化,分享一个自己写的小工具
  9. 【Office 365 2108更新】
  10. 50 道网络面试题及答案