查看: 1206|回复: 34

[特效] 未知频率

[复制链接]

一坛酒

樱果相依
发表于 2024-5-20 12:46 | 显示全部楼层 |阅读模式
本帖最后由 凡哥 于 2024-5-20 17:58 编辑

评分

7

查看全部评分

点评
回复

使用道具

一坛酒

樱果相依
 楼主| 发表于 2024-5-20 12:47 | 显示全部楼层
代码

  1. <style>
  2.         #papa { margin: 20px 0 20px calc(50% - 602px); width: 1024px; height: 640px; box-shadow: 3px 3px 6px gray; overflow: hidden; position: relative; z-index: 1; display: grid; place-items: center; }
  3.         #papa::before { position: absolute; content: 'okey'; width: 100%; height: 100%; background: url('https://638183.freep.cn/638183/t23/3/wvpl.jpeg') no-repeat center/cover; transition: 2s; }
  4.         #papa:hover::before { transform: scale(1.5);}
  5.         #canv, #player, #vid { position: absolute; }
  6.         #vid { bottom: 0; width: 100%; height: calc(100% + 80px); object-fit: cover; opacity: .9; mix-blend-mode: lighten; }
  7.         #player { cursor: pointer; animation: rot 8s linear infinite var(--state); }
  8.         @keyframes rot { to { transform: rotate(360deg); } }
  9. </style>

  10. <div id="papa">
  11.         <audio id="aud" src="https://music.163.com/song/media/outer/url?id=2141274880" autoplay loop></audio>
  12.         <video id="vid" src="https://img.tukuppt.com/video_show/2475824/00/01/99/5b4f03b48b1c3.mp4" autoplay loop muted></video>
  13.         <canvas id="canv" width="400" height="260"></canvas>
  14.         <img id="player" src="https://638183.freep.cn/638183/t23/btn/windmill.png" alt="" title="播放/暂停" />
  15. </div>

  16. <script>

  17. var ctx = canv.getContext('2d');
  18. ctx.globalAlpha = .6;
  19. var ww = canv.width, hh = canv.height;
  20. var total = 16, step = 0.2, balls = [], raf = null;

  21. class Ball {
  22.         constructor(data) {
  23.                 this.ctx = ctx;
  24.                 this.data = data;
  25.         };
  26.         draw() {
  27.                 ctx.fillStyle = this.data.color;
  28.                 ctx.beginPath();
  29.                 ctx.arc(this.data.x, this.data.y, this.data.r, 0, Math.PI * 2);
  30.                 ctx.fill();
  31.         };
  32. };

  33. var setData = (angle) => {
  34.         var cx = ww / 2, cy = hh / 2, r1 = ww / 2 - 25, r2 = hh / 2 - 25;
  35.         var x = cx + r1 * Math.cos(Math.PI / 180 * angle),
  36.                         y = cy + r2 * Math.sin(Math.PI / 180 * angle);
  37.                 var r = 5 + y / 25;
  38.         return { x: x, y: y, r: r };
  39. };

  40. var mkBalls = () => {
  41.         for(var i = 0; i < total; i ++) {
  42.                 var a = i * 360 / total;
  43.                 var d = Object.assign(setData(a), {angle: a, color: `#${Math.random().toString(16).substring(2,8)}`});
  44.                 var ball = new Ball(d);
  45.                 ball.draw();
  46.                 balls.push(ball);
  47.         }
  48. };

  49. var render = () => {
  50.         ctx.clearRect(0, 0, ww, hh);
  51.         balls.forEach(b => {
  52.                 b.data.angle = (b.data.angle + step) % 360;
  53.                 b.data = Object.assign(b.data, setData(b.data.angle));
  54.                 b.draw();
  55.         });
  56.         raf = requestAnimationFrame(render);
  57. };

  58. var mState = () => {
  59.         papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
  60.         aud.paused ? vid.pause() : vid.play();
  61.         aud.paused ? cancelAnimationFrame(raf) : raf = requestAnimationFrame(render);
  62. };

  63. aud.onplaying = aud.onpause = () => mState();

  64. player.onclick = () => aud.paused ? aud.play() : aud.pause();

  65. mkBalls();

  66. </script>
复制代码


评分

6

查看全部评分

点评
回复

使用道具

万水千山总是情

望月兔

新春美食 版主勋章 江湖之上 江湖靓女 桃花朵朵 山高为峰 山外有山 巳巳如意 两周年庆 守望千山 少年歌行 海洋之心 蝴蝶精灵 花漫千山 中秋月圆 欢度国庆 雪花精灵 开卷有益 我书我心 甜心百灵 七夕之桥 樱果相依 前兔似锦
发表于 2024-5-20 13:32 | 显示全部楼层
沙发
点评
回复

使用道具

笑傲江湖

一坛酒

管理勋章 山高为峰 山外有山 巳巳如意 两周年庆 守望千山 少年歌行 映像2024 一叶知秋 我书我心 七夕之桥 樱果相依 前兔似锦
发表于 2024-5-20 15:42 | 显示全部楼层
凡哥好
很精彩的制作
画面震撼
鼠标效果很棒
感谢代码分享。。。
点评
回复

使用道具

一坛酒

樱果相依
 楼主| 发表于 2024-5-20 18:07 | 显示全部楼层
令狐冲 发表于 2024-5-20 15:42
凡哥好
很精彩的制作
画面震撼

感谢令兄支持
点评
回复

使用道具

一坛酒

樱果相依
 楼主| 发表于 2024-5-20 18:08 | 显示全部楼层

感谢穆版支持
点评
回复

使用道具

随遇而安

闲花落

版主勋章 山高为峰 山外有山 巳巳如意 两周年庆 守望千山 少年歌行 一叶知秋 樱果相依
发表于 2024-5-20 20:40 | 显示全部楼层
这个粒子旋转通过计算,实面近大远小的大小变换,有很强的空间感~~
点评
回复

使用道具

随遇而安

闲花落

版主勋章 山高为峰 山外有山 巳巳如意 两周年庆 守望千山 少年歌行 一叶知秋 樱果相依
发表于 2024-5-20 20:42 | 显示全部楼层
鼠标移到背景图片上,图片可进行1.5倍的变大效果,且始终居中,
看上去是风车的固定轴似的,这个设计十分巧妙
点评
回复

使用道具

随遇而安

闲花落

版主勋章 山高为峰 山外有山 巳巳如意 两周年庆 守望千山 少年歌行 一叶知秋 樱果相依
发表于 2024-5-20 20:43 | 显示全部楼层
视频的色彩漂亮,有梦幻之感,整贴效果赏心悦目,十分好看。。
点评
回复

使用道具

一坛酒

樱果相依
 楼主| 发表于 2024-5-20 21:07 | 显示全部楼层
花简静 发表于 2024-5-20 20:43
视频的色彩漂亮,有梦幻之感,整贴效果赏心悦目,十分好看。。

果酱果酱
点评
回复

使用道具

您需要登录后才可以回帖 登录 | 中文注册

本版积分规则

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表