为了实现 **逐字显示文字 + 每个字出现时触发震动** 的效果,我们可以对之前的逐行打字逻辑进行改造,将文本拆分为字符数组,逐个字符显示,并在每个字符出现后调用 `navigator.vibrate()`。
---
### ✅ 功能目标
- **逐字显示文字**:将文本拆分为字符,逐个显示在页面上。
- **震动反馈**:每显示一个字符,触发一次震动(适用于移动设备)。
- **兼容性处理**:在不支持震动的设备上自动降级,仅显示文字。
- **视觉增强**:添加光标闪烁效果,模拟真实打字机体验。
---
### 🧱 实现代码(HTML + CSS + JavaScript)
```html
逐字打字 + 震动效果
逐字打字 + 震动效果
开始打字
```
---
### 📱 效果说明
- **逐字显示**:每个字符逐个出现,模拟真实打字机效果。
- **震动反馈**:每显示一个字符,手机震动一次(适用于支持震动的设备)。
- **光标闪烁**:使用 CSS 动画实现光标闪烁,增强视觉体验。
- **多行支持**:支持换行符 `\n`,可显示多行文本。
---
### 🧪 测试建议
- **在移动设备上测试**:确保震动效果正常触发。
- **尝试不同打字速度**:调整 `typeSpeed`(推荐 100ms)和 `vibrateDuration`(推荐 50ms)以获得最佳体验。
- **检查兼容性**:在不支持震动的设备上,震动会被自动跳过,仅显示文字。
---
### 💡 扩展建议
- **添加语音朗读**:结合 `SpeechSynthesisUtterance`,实现文字+语音+震动三重反馈。
- **暂停/继续功能**:添加“暂停”按钮,暂停打字和震动。
- **自定义震动模式**:使用 `navigator.vibrate([100, 50, 100])` 实现震动-暂停-震动的节奏。
---
### ✅ 总结
通过将文本拆分为字符数组,并使用 `setTimeout` 控制逐字显示,我们可以轻松实现 **逐字打字 + 每字震动** 的效果。该方案结构清晰、易于扩展,适合用于移动端交互式网页、教育类应用或游戏场景。
评论区: