Little People Widget 轻量 canvas 小人动画组件

给网站加一条会动的人群横幅

无需构建工具,不依赖框架,把 JS、CSS 和雪碧图放进静态目录即可接入。适合导航页、个人站、Hexo、Halo、活动页和轻量产品展示页。

普通 HTML 可用 支持 Hexo / Halo 速度和密度可控 多套人物素材
实时预览 切换不同人物风格,调整移动速度和密度,观察它在页面首屏里的实际效果。

三种常用接入方式

资源包可以直接给客户自托管,也可以放到你的 CDN 域名下统一引用。下面代码里的路径按实际部署目录替换即可。

普通 HTML

<link rel="stylesheet" href="/little-people/little-people.css">
<div id="little-people"></div>
<script src="/little-people/little-people.js"></script>
<script>
  LittlePeople.init("#little-people", {
    sprite: "/little-people/sprite-programmer.png",
    rows: 5,
    cols: 14,
    height: 180,
    people: 18,
    maxPeople: 28,
    speedMultiplier: 1,
    flipSprite: true,
    labels: ["Java", "运维", "前端", "后端", "测试", "小王", "小李"],
    labelChance: 0.78,
    visibleSourceRatio: 0.55,
    bubbleChance: 0.35,
    messages: [
      "欢迎回来",
      "这个组件可以放进任意页面",
      { text: "点击跳转到官网", url: "https://example.com" }
    ]
  });
</script>

Hexo

source/little-people/
  little-people.css
  little-people.js
  sprite-programmer.png
  sprite-openpeeps.png
  sprite-animal.png
  NOTICE-openpeeps.txt

在主题 layout、partial 或页面模板中插入容器,
再引用 CSS、JS 并调用 LittlePeople.init。

Halo

theme/static/little-people/
  little-people.css
  little-people.js
  sprite-programmer.png
  sprite-openpeeps.png
  sprite-animal.png
  NOTICE-openpeeps.txt

在主题模板中引用静态资源,
再调用 LittlePeople.init。

如何修改配置

所有配置都写在 LittlePeople.init 的第二个参数里。改完保存页面即可生效,不需要重新打包组件脚本。

气泡文字和点击跳转

LittlePeople.init("#little-people", {
  sprite: "/little-people/sprite-programmer.png",
  rows: 5,
  cols: 14,

  // 气泡出现概率,0 表示不显示,1 表示尽量显示
  bubbleChance: 0.35,

  // 字符串只显示文字;对象可以设置点击跳转
  messages: [
    "欢迎回来",
    "今天也要摸鱼吗",
    { text: "点击跳转到官网", url: "https://example.com" },
    { text: "查看文档", url: "https://example.com/docs" }
  ]
});

密度、速度和素材

LittlePeople.init("#little-people", {
  sprite: "/little-people/sprite-openpeeps.png",
  rows: 5,
  cols: 14,
  height: 190,
  people: 16,
  maxPeople: 26,
  mobileMaxPeople: 8,
  speedMultiplier: 1.2,
  visibleSourceRatio: 0.82,
  flipSprite: true
});

程序员胸牌文字

LittlePeople.init("#little-people", {
  sprite: "/little-people/sprite-programmer.png",
  rows: 5,
  cols: 14,

  // 只建议程序员版开启胸牌
  labels: ["Java", "运维", "前端", "后端", "测试", "小王", "小李"],
  labelChance: 0.78
});

资源和配置

展示页用到的所有文件都是静态文件。Open Peeps 素材说明放在 NOTICE 文件中,方便随资源包一同交付。

资源文件

  • little-people.js组件脚本
  • little-people.css容器样式
  • sprite-programmer.png程序员版
  • sprite-openpeeps.pngOpen Peeps 版
  • sprite-animal.png动物版
  • NOTICE-openpeeps.txt素材授权说明

常用参数

  • people初始人物数量
  • maxPeople最大密度
  • speedMultiplier移动速度倍率
  • visibleSourceRatio展示裁切比例
  • labels程序员胸牌文字
  • messages气泡文案和链接

作为客户交付时,推荐让客户自托管资源包;如果你统一 CDN 托管,建议按版本目录发布,例如 /little-people/v1/,避免更新影响已上线页面。

灵感来源与素材边界

组件表现形式受到 n.mumingfang.com 页面中的人物动画氛围启发;当前交付包提供的是可自行部署的静态组件和自制/可授权素材版本。

  • 基础版仅用于本展示页效果对照,不写入客户接入清单,不随下载包分发。
  • 推荐交付程序员版、Open Peeps 版、动物版,或替换为客户自有授权素材。
  • Open Peeps素材来源和 CC0 说明见 NOTICE-openpeeps.txt

说明:网页上展示过的图片无法从技术上完全禁止访客保存;这里的处理重点是避免把参考素材作为客户资源包主动分发。