Skip to content
yalways17Public

Repository files navigation

LogTime

⏱️ LogTime 是一个以非线性节奏呈现时间的计时器。

真实时间始终匀速流逝,而 LogTime 用数学模型改变时间的视觉呈现—— 不是给你一个抽象的进度条,而是让一个像素小人在街道上持续向前走,世界从他身边流过。

🚶 视觉:走在时间里

主视觉是一个 2D 横版像素街景:小人固定在画面中行走,身后的街道、楼房、树木不断经过。 前进感不来自角色位移,而来自世界向后流过的速度。

决定这个速度的,是你选择的时间模型:

世界速度 = 当前时间模型的「感知进度曲线」的导数 P′(x)

于是三种模型的差别不是"读一个数",而是直接看出来:

模型 感知进度 P(x) 导数 P′(x) 看到的效果
🚀 启程 ln(1+2x) / ln 3 1.82 → 0.61 一开始冲得很快,之后慢慢沉下来
🛬 抵达 x² 0 → 2 开头几乎不动,最后一路冲向终点
📏 恒行 x 恒为 1 匀速,世界稳定流过

三种模型描述的是同一段真实时间,只是采用不同的视觉节奏。模型本身是纯数学的,界面只负责把它"走"出来。

🏙️ 街景

  • 6 个深度层:天空 / 云 / 远景 / 中景 / 近景 / 地面,逐层视差
  • 视差速度用素材自带的标准系数:0 → 0.08 → 0.2 → 0.4 → 0.65 → 1.0
  • 每层各自累加整数像素后绘制,所以滚动是像素级稳定的,不会抖
  • 4 套街景,各带一套美术与载具:纸张清昼 · 海洋(划船)/ 软糖暖昼 · 森林(步行)/ 扁平星夜 · 沙漠(骑骆驼)/ 玻璃暮夜 · 城市(开飞机)

✨ 功能

  • ✏️ 自定义任务名称与时长
  • ⏱️ 支持秒、分钟、小时、天、周
  • ⏯️ 暂停 / 继续 / 重新开始
  • 📐 启程 / 抵达 / 恒行三种时间模型
  • 🕐 实际用时显示 / 隐藏(真实进度默认隐藏)
  • 🗺️ 右上角进度刻度条:游标走在映射后的进度上(读数就是 P(x),不是真实百分比)
  • 🏷️ 左下角模型徽标:跟着当前模型变
  • 🌗 浅色 / 深色两套外观,4 套街景(海洋 / 森林 / 沙漠 / 城市),角色随场景换载具
  • 💾 任务状态本地保存,刷新后自动恢复
  • 📸 生成当前状态图片(配色跟随当前主题)
  • 🔔 到点提醒:切到后台时系统通知 + 提示音 + 震动
  • 💡 计时过程中屏幕常亮(Screen Wake Lock)
  • 🗂️ 历史记录
  • ☁️ 云端账户与数据同步(Supabase),未登录时自动降级为纯本地模式

📱 iOS / 移动端

  • 页面锁定不滚动:position: fixed 的 body + overflow: hidden + overscroll-behavior: none
  • 安全区:四边都用 env(safe-area-inset-*),支持 viewport-fit=cover 与灵动岛
  • 聚焦不缩放:所有文本输入控件字号 ≥ 16px(否则 iOS 聚焦会自动放大整页)
  • 无点击高亮:-webkit-tap-highlight-color: transparent
  • 键盘弹出时把视觉视口拉回,避免界面被顶出屏幕
  • 定高用 100svh(稳定视口高度),地址栏收放不再改变布局
  • 底部工具栏的高度在首帧之前就按存档预留好,重进 App 时画面不会先大后小

🌐 在线体验

LogTime

🛠️ 技术

  • 单文件、零构建:整个应用就是一个 index.html,素材以 base64 内嵌,直接打开即可运行
  • 原生 JS(IIFE),无框架、无打包步骤
  • 街景用 CSS 分层 + background-position 平移(走合成器线程,不占主线程)
  • 角色是 CSS 元素拼装的像素小人,走路循环由 CSS 动画驱动
  • 屏幕常亮用 Screen Wake Lock API,通知走 Service Worker
  • 云同步可选:CDN 加载失败时自动降级,绝不影响计时与历史记录

LogTime · v2.0.1

Releases

Packages

Contributors

Languages