⏱️ 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),未登录时自动降级为纯本地模式
- 页面锁定不滚动:
position: fixed的 body +overflow: hidden+overscroll-behavior: none - 安全区:四边都用
env(safe-area-inset-*),支持viewport-fit=cover与灵动岛 - 聚焦不缩放:所有文本输入控件字号 ≥ 16px(否则 iOS 聚焦会自动放大整页)
- 无点击高亮:
-webkit-tap-highlight-color: transparent - 键盘弹出时把视觉视口拉回,避免界面被顶出屏幕
- 定高用
100svh(稳定视口高度),地址栏收放不再改变布局 - 底部工具栏的高度在首帧之前就按存档预留好,重进 App 时画面不会先大后小
- 单文件、零构建:整个应用就是一个
index.html,素材以 base64 内嵌,直接打开即可运行 - 原生 JS(IIFE),无框架、无打包步骤
- 街景用 CSS 分层 +
background-position平移(走合成器线程,不占主线程) - 角色是 CSS 元素拼装的像素小人,走路循环由 CSS 动画驱动
- 屏幕常亮用 Screen Wake Lock API,通知走 Service Worker
- 云同步可选:CDN 加载失败时自动降级,绝不影响计时与历史记录
LogTime · v2.0.1