当前位置: 首页  >  下载站  >  js特效  >  html5特效  >  HTML5+Canvas的黑洞特效

HTML5+Canvas的黑洞特效

HTML5+Canvas的黑洞特效

HTML5+Canvas的黑洞特效
分类:   js特效 / html5特效 发布时间:  2017-12-22 访问量:  1661
下载量:  53
点击下载 预览效果
更多>

最新下载

jQuery企业留言表单联系代码

jQuery企业留言表单联系代码是一款简洁实用的企业留言表单和联系我们介绍页面代码。
112 2024-02-29

HTML5 MP3音乐盒播放特效

HTML5 MP3音乐盒播放特效是一款基于html5+css3制作可爱的音乐盒表情,点击开关按钮mp3音乐播放器。
108 2024-02-29

HTML5炫酷粒子动画导航菜单特效

HTML5炫酷粒子动画导航菜单特效是一款导航菜单采用鼠标悬停变色的特效。
136 2024-02-29

jQuery可视化表单拖拽编辑代码

jQuery可视化表单拖拽编辑代码是一款基于jQuery和bootstrap框架制作可视化表单。
97 2024-02-29

VUE.JS仿酷狗音乐播放器代码

VUE.JS仿酷狗音乐播放器代码是一款基于js跟css3实现的仿酷狗网页音乐播放器特效。
81 2024-02-29

经典html5推箱子小游戏

经典html5推箱子小游戏总共有100关,移动方式有上下左右按键。
127 2024-02-29
HTML5+Canvas的黑洞特效
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>不要失去你的彩虹</title>

<style>
canvas {
  position: absolute;
  top: 0;
  left: 0;
}
</style>

</head>
<body>

<canvas id=c></canvas>

<script>
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);
})
</script>

</body>

</html>

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

本站所有资源都是由网友投搞发布,或转载各大下载站,请自行检测软件的完整性!本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!如有侵权请联系我们删除下架,联系方式:admin@php.cn

相关推荐

HTML5+Canvas的黑洞特效

HTML5+Canvas的黑洞特效
html5特效
2017-12-22

HTML5 Canvas星空黑洞动画效果

一款HTML5 Canvas星空黑洞动画效果
html5特效
2023-04-19

Canvas宇宙黑洞动画特效

Canvas宇宙黑洞动画特效
html5特效
2018-06-27

three-js+html5 Canvas酷炫宇宙黑洞粒子动画特效

three-js+html5 Canvas酷炫宇宙黑洞粒子动画特效
jQuery特效
2018-05-19

基于HTML5Canvas的黑洞动画特效

基于HTML5Canvas的黑洞动画特效
其它特效
2017-12-06

HTML5 Canvas虫洞旋涡动画特效

HTML5 Canvas虫洞旋涡动画特效
html5特效
2018-06-21

html5-实现canvas宇宙黑洞炫酷粒子动画特效

html5 canvas宇宙黑洞炫酷粒子动画特效代码下载,采用响应式设计,自适应手机移动端。
html5特效
2018-10-25

CSS3火焰黑洞动画背景特效

CSS3火焰黑洞动画背景特效
CSS3特效
2017-08-12

热门下载

jQuery+Html5实现唯美表白动画代码

jQuery+Html5实现唯美表白动画代码,动画效果很棒,程序员表白必备!
其它特效
2017-02-14

情侣浪漫表白js特效代码

情侣浪漫表白js特效代码,这样的特效,可以用在婚纱摄影的网站上,也可以放在个人网站中,也还一个不错的特效,php中文网推荐下载!
其它特效
2017-02-08

炫酷的系统登录页

炫酷的系统登录页
jQuery特效
2019-12-30

H5熊猫弹跳小游戏源码

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

H5 3D滚球游戏源码

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

HTML5 canvas射击鸭子小游戏

HTML5 canvas射击鸭子小游戏
html5特效
2017-11-24

HTML5+three实现3D酷炫拼魔方游戏特性

html5基于three.js制作3D拼魔方小游戏,双击开始游戏,看你来多少时间内能拼成魔方游戏。单击鼠标拖动可以3D查看魔方位面。
html5特效
2019-04-04

简单js恋爱表白神器

简单原生js恋爱表白神器
其它特效
2017-02-14
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号