LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

分享一个 JS 鼠标跟随贪吃蛇背景库

freeflydom
2026年8月4日 11:53 本文热度 124

功能借鉴 SimonAKing 个人主页,偶然间看到他的网站有这个功能便用 AI 分析复刻出一个可直接使用的 JS 库,并分享出来

Github 仓库地址:https://github.com/z-hanzhe/snake-background
Github Pages 在线演示:https://z-hanzhe.github.io/snake-background/

本项目代码全部由 Claude Opus 4.8 完成,接下来的项目介绍也由它生成,以下是 AI 提供的文档:

SnakeBackground · 鼠标贪吃蛇网格背景,一个零依赖、原生 Canvas 2D 的网页背景特效库。引入后会自动在页面最底层铺一张全屏画布,把网页背景替换为一张缓慢流动的网格;鼠标滑过时会拖出一条跟随移动的“贪吃蛇”,蛇头碰到随机出现的食物方块后蛇身会增长。

特性

  • 零依赖,单文件,约 15KB,直接 <script> 引入即可
  • 引入即生效,无需编写任何初始化代码
  • 背景层 pointer-events: none不影响页面的点击、选中、滚动等正常交互
  • 支持 UMD(浏览器全局 / CommonJS / AMD)
  • 高清屏(devicePixelRatio)自适应,不模糊
  • 页面切到后台自动暂停动画,省电
  • 丰富的可配置项与运行时 API

快速开始

最简单的用法——引入即生效:

<script src="snake-background.js"></script>

三种使用方式

1. 自动模式(默认)

引入脚本即自动挂载,实例暴露在 window.snakeBackground 上:

<script src="snake-background.js"></script>

2. 自定义配置

在引入脚本之前声明全局配置对象:

<script>
  window.SNAKE_BACKGROUND_CONFIG = {
    squareSize: 32,
    speed: 0.08,
    foodColor: "rgba(255, 120, 120, 0.85)",
  };
</script>
<script src="snake-background.js"></script>

也可以直接在 <script> 标签上用 data-* 属性覆盖常用项:

<script
  src="snake-background.js"
  data-square-size="32"
  data-speed="0.08"
  data-direction="right"
></script>

支持的 data-* 属性:data-square-sizedata-speeddata-directiondata-z-indexdata-background-color

3. 手动模式

在标签上加 data-manual,则不自动启动,由你自行控制:

<script src="snake-background.js" data-manual></script>
<script>
  const bg = new SnakeBackground({ speed: 0.08 });
  bg.mount();      // 挂载并开始动画
  // bg.destroy(); // 需要时销毁
</script>

也可以把背景挂载到某个指定容器(而非整个视口)。容器需为定位元素(如 position: relative):

new SnakeBackground({ mountTarget: "#hero" }).mount();

配置项

字段类型默认值说明
directionstring"diagonal"网格流动方向:right/left/up/down/diagonal
speednumber0.05网格每帧流动像素速度(很小以营造缓慢漂移感)
squareSizenumber40单个格子的边长(像素)
borderColorstringrgba(255,255,255,0.1)网格线颜色
hoverFillColorstringrgba(255,255,255,0.8)鼠标悬停格子的填充色
hoverShadowColorstringrgba(255,255,255,0.8)悬停格子的辉光颜色
transitionDurationnumber200悬停高亮透明度过渡时长(毫秒)
trailDurationnumber1500鼠标划过残影的渐隐时长(毫秒)
foodColorstringrgba(100,255,152,0.8)食物方块颜色
snakeHeadColorstringrgba(255,255,255,0.95)蛇头颜色
snakeTailColorstringrgba(218,231,255,0.25)蛇尾颜色(蛇身由头到尾在两色间渐变)
snakeColorDecaynumber0.85蛇身颜色衰减系数(越小尾部褪色越快)
backgroundColorstring#060606画布背景色
vignettebooleantrue是否绘制四周渐暗的朦胧遮罩(暗角)
vignetteColorstring | nullnull遮罩边缘颜色,缺省跟随 backgroundColor
vignetteIntensitynumber1遮罩强度 [0,1]:0 无遮罩、1 边缘完全变暗
vignetteStartnumber0中心清晰区比例 [0,1):越大朦胧从越靠边处开始
zIndexnumber-1背景 Canvas 的层级(默认置于内容之下)
mountTargetstring | Element | nullnull挂载容器;为空时铺满整个视口

运行时 API

实例方法(自动模式下通过 window.snakeBackground 调用):

方法说明
mount()创建画布、绑定事件并启动动画,返回实例本身
start()启动/恢复动画循环
stop()暂停动画循环
reset()清空蛇身与残影(保留网格与食物)
setVignette(opts)运行时调整朦胧遮罩(开关/强度/清晰区/颜色)
resize()按当前尺寸与像素比重设画布
createFood()立即在随机位置重新生成食物
destroy()停止动画、解绑事件、移除自建画布

示例:

window.snakeBackground.reset();               // 重置蛇身
window.snakeBackground.stop();                // 暂停
window.snakeBackground.start();               // 继续
window.snakeBackground.setVignette({ intensity: 0.5 }); // 减淡朦胧遮罩

朦胧遮罩(越靠边越看不清的那层)

页面那层淡淡的、四周渐暗的朦胧感,是一张从中心透明到边缘变暗的径向遮罩。可在引入时配置,也可运行时通过 setVignette() 调整:

const bg = window.snakeBackground;
bg.setVignette(false);                 // 关闭朦胧
bg.setVignette({ intensity: 0.4 });    // 整体减淡
bg.setVignette({ start: 0.6 });        // 扩大中心清晰区,仅四角压暗
bg.setVignette({ color: "#001018" });  // 更换边缘色调

完整的方法签名、参数与更多示例见 API.md

实现原理

  • 无限网格:每帧让 gridOffset 按方向累加,再对 squareSize 取模,使偏移始终落在一个格子内,从而用有限的重绘营造出无限平铺、缓慢流动的错觉。
  • 贪吃蛇:采用贪吃蛇经典的队列结构——鼠标每进入一个新格子,就把上一个悬停格作为“蛇头”压入队首;未吃到食物时同时弹出队尾,保持长度不变;吃到食物时跳过一次弹出,蛇身即增长一节。
  • 蛇身渐变:蛇头为亮色,其后各节按 snakeColorDecay 指数衰减,在头色与尾色之间线性插值,形成由亮到暗的渐变拖尾并带辉光。
  • 残影:鼠标离开的格子进入一个 Map,逐帧按 trailDuration 递减透明度,归零即删除,形成划过的余晖。

浏览器兼容

支持所有实现了 Canvas 2D 与 requestAnimationFrame 的现代浏览器(Chrome / Edge / Firefox / Safari)。

阅读原文:点击这里


该文章在 2026/8/4 11:53:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号