发布于 2026-01-05 0 阅读
0

一台打字机,但使用新的 HTML 标签

一台打字机,但使用新的 HTML 标签

上次,我制作了一个不使用 HTML、CSS 或 Javascript 的打字机动画。如果我们不什么都不用,而是允许自己使用……所有技术,会发生什么呢?

这一切都是通过一个炫酷的新 HTML 标签实现的<typewritten-text>

This is a <typewritten-text><strong>typewriter effect!</strong></typewritten-text>
Enter fullscreen mode Exit fullscreen mode

请点击此处查看安装和使用方法:

GitHub 标志 奥罗拉蒂德/打字文本

文本会自动输入!

一个新的HTML标签?

HTML 标准允许开发者通过Web Components定义自定义元素。创建一个新元素只需要少量 JavaScript 代码,之后就可以根据需要定义任意数量的功能。

class MyElement extends HTMLElement {
  // code for how the element looks and behaves
}

window.customElements.define('my-element', MyElement)
Enter fullscreen mode Exit fullscreen mode

typewritten-text元素就是这样一种 Web 组件,旨在提供语义化、灵活且可重用的打字机组件!

由于 Web 组件是浏览器原生技术,因此它们可以开箱即用地与我们大多数喜爱的框架配合使用(说的就是你,React ……)。这是我最喜欢它们的原因之一!

诚然,开发者的体验有时会……非常痛苦。这个看似不起眼的小功能,最终实现起来却比我最初想象的要困难得多,也更难达成我的所有目标。

元素typewritten-text

一旦 JavaScript 进入应用领域,基本上一切皆有可能。

  • 无需使用等宽字体!内文可以使用任何字体和字号;实际上,你甚至可以混合使用不同的字体。
  • 内置多行支持,方便您输入较长的句子。
  • 界面非常简单;基本上可以像使用任何标准HTML标签一样使用它。

当然,我也尽力让它尽可能方便易用

  • 无论当前输入状态如何,它都能显示文本内容,这对于使用辅助技术的人来说尤其有用。
  • 对于喜欢减少动态效果的用户,已禁用闪烁光标动画
  • 内容也不会发生偏移!元素的大小始终与其内容的大小一致。

或许它最有趣的功能在于其事件机制。当输入字符或短语结束时,该元素会触发事件。通过监听这些事件,你可以利用代码的魔力,让打字机执行任何你想要的自定义行为!

例如,开始编写另一段文字:

first.addEventListener('typewritten-text:phrasetyped', () => {
    second.start()
})
Enter fullscreen mode Exit fullscreen mode

展示

这里介绍几个你可以用这个typewritten-text组件做的巧妙事情!

打字机循环

利用事件,可以轻松地循环切换不同的文本进行输入。

typewritten-text元素的设计非常基础,以便能够以尽可能多的方式使用,因此循环效果并未内置。不过,可以创建一个不同的 Web 组件来封装该效果!

角色对话

角色说话时也常常带有打字机动画效果!

点击Rerun画面底部即可再次观看动画。

了解更多

所有关于如何安装和使用该typewritten-text组件的信息都可以在 GitHub 上找到!

GitHub 标志 奥罗拉蒂德/打字文本

文本会自动输入!

我可能很快会写一些关于实际制作(和测试)Web组件的过程。

文章来源:https://dev.to/auroratide/a-typewriter-but-using-a-new-html-tag-60i