【实战】用CSS实现文本打字机效果

简介: 【实战】用CSS实现文本打字机效果

之前,我们的文章中已经有通过 JS 的方式实现文本打字机的效果了,具体可以看这篇文章:

【前端三分钟】利用Javascript实现打字效果

在本文中,你将学习如何使用纯CSS实现打字机效果,使网站的文本更加动态和迷人。

打字机的效果是文字逐渐显露出来,就好像是在你眼前打字一样。在你的文本中添加打字机的效果可以帮助吸引你网站的访问者,并保持他们进一步阅读的兴趣。打字机效果可以用于许多目的,例如制作引人入胜的登录页面、标语、代码演示。

打字机效果很容易创建

打字机效果很容易制作,要理解本文,你需要掌握CSS和CSS动画的基本知识。

首先我们来解释一下打字机效果的实现方式:

  • 打字机动画将通过使用CSS steps()函数一步一步地将文本元素的宽度从0更改为100%,从而显示文本元素。
  • 一个闪烁动画将使光标动起来

开始

让我们首先为我们的打字机效果创建web页面。它将为我们的打字机文本包含一个<div>容器:

<!doctype html>
<html>
  <head>
    <title>Typewriter effect</title>
    <style>
      body{
        background: navajowhite;
        background-size: cover;
        font-family: 'Trebuchet MS', sans-serif; 
      }
  </style>
  </head>
  <body>
    <div class="container">
      <div class="typed-out">Web Developer</div>
    </div>
  </body>
</html>

为打字机文本的容器设置样式

现在我们已经有了网页的布局,让我们用" typeout "类<div>添加样式:

.typed-out {
  overflow: hidden;
  border-right: .15em solid orange;
  font-size: 1.6rem;
  width: 0;
}

注意,为了使打字机效果生效,我们添加了以下内容:

  • "overflow: hidden;""width: 0;",以确保在输入效果开始之前不会显示文本内容。
  • "border-right: .15em solid orange;",用来创建打字机的光标。

在产生输入效果之前,为了在输入完的元素的最后一个字母处停止光标,就像打字机所做的那样,我们将为输入的元素创建一个容器,并添加display: inline-block;:

.container {
  display: inline-block;
}

制作显示文本动画

打字机动画将创建一个效果,一个字母一个字母地打印出输入元素中的文本。我们将使用@keyframes CSS动画实现这个效果:

@keyframes typing {
  from { width: 0 }
  to { width: 100% }
}

正如所看到的,所有这些动画所做的只是将元素的宽度从0更改为100%。

现在,我们将在我们的键入类中包括这个动画,并设置其动画方向为forward,以确保文本元素在动画完成后不会返回width: 0:

.typed-out{
    overflow: hidden;
    border-right: .15em solid orange;
    white-space: nowrap;
    font-size: 1.6rem;
    width: 0;
    animation: typing 1s forwards;
}

我们的文本元素将简单地从左到右平稳地显示:

添加步骤以实现打字机效果

到目前为止,我们的文本被揭示了,但是是以一种平滑的方式,不是一个字母一个字母地揭示文本。这是一个开始,但显然不是打字机的效果。

为了让这个动画一个字母一个字母地显示我们的文本元素,或者像打字机那样以步骤显示文本元素,我们需要将typed-out类包含的typing动画拆分为步骤,以便它看起来像是被键入的。这就是CSS函数steps()的作用:

.typed-out{
  overflow: hidden;
  border-right: .15em solid orange;
  white-space: nowrap;
  font-size: 1.6rem;
  width: 0;
  animation: 
    typing 1s steps(20, end) forwards;
}

如你所见,我们使用CSS steps()函数将typing动画分为20个步骤。这是我们现在看到的:

这是我们目前为止的完整代码:

<html>
  <head>
    <title>Typewriter effect</title>
  </head>
  <style>
    body{
      background: navajowhite;
      background-size: cover;
      font-family: 'Trebuchet MS', sans-serif; 
    }
    .container{
      display: inline-block;
    }
    .typed-out{
      overflow: hidden;
      border-right: .15em solid orange;
      white-space: nowrap;
      animation: 
      typing 1s steps(20, end) forwards;
      font-size: 1.6rem;
      width: 0;
    }
    @keyframes typing {
      from { width: 0 }
      to { width: 100% }
    }
  </style>
<body>
<h1>I'm Matt, I'm a</h1>
<div class="container">
  <div class="typed-out">Web Developer</div>
</div>
</body>
</html>

你可以通过调整 animation 中的时间和steps函数的第一个参数来达到较好的效果。

制作和样式闪烁光标动画

很明显,最初的打字机没有闪烁光标,但增加一个来模仿现代电脑/文字处理器闪烁光标的效果已经成为一种传统。闪烁的光标动画有助于使打印出来的文本从静态文本元素中脱颖而出。

要添加一个闪烁光标动画到我们的打字机动画,我们首先创建闪烁动画:

@keyframes blink {
  from { border-color: transparent }
  to { border-color: orange; }
}

这个动画将改变输入元素的边框颜色——它被用作打字机效果的光标——从透明变为橙色。

我们将在typed-out类的规则中包含这个动画,并将其动画方向属性设置为infinite,使光标每隔0.8秒消失一次,然后再次出现:

.typed-out{
    overflow: hidden;
    border-right: .15em solid orange;
    white-space: nowrap;
    font-size: 1.6rem;
    width: 0;
    animation: 
      typing 1s steps(20, end) forwards,
      blink .8s infinite;
}

调整闪烁打字效果的代码

我们可以通过调整光标的右边框使光标变薄或变厚:0.15 em solid orange;属性,或者可以使光标为不同的颜色,给它一个边界半径,调整其闪烁效果的频率,等等。

总结

在本文中,我们已经看到使用CSS创建动画“打字机”文本是多么容易。这种打字效果绝对可以为你的网页增添乐趣。

不过,或许以温和的警告作为结束是值得的。**这个技巧最适合用于小部分的非关键文本,只是为了创造一点额外的乐趣。**但是要注意不要过于依赖它,因为使用CSS动画有一些限制。请确保在一系列设备和视口大小上测试您的打字机文本,因为结果可能因平台而异。还要为依赖辅助技术的最终用户着想,最好运行一些可用性测试,以确保您没有让用户的生活变得困难。因为你可以用纯CSS做一些事情,并不一定意味着你应该这样做。如果打字机效果对您很重要,并且希望将其用于更关键的内容,那么至少也应该考虑JavaScript解决方案。

无论如何,我希望你喜欢这篇文章,并希望它能让你思考使用CSS动画可以做的其他有趣的事情,从而为你的web页面添加兴趣和乐趣。


相关文章
|
2月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
31 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
2月前
|
前端开发
【前端web入门第三天】02 CSS字体和文本
本文详细介绍了CSS中字体和文本的相关属性。字体部分涵盖字体大小、粗细、样式、行高、字体族及`font`复合属性,通过具体示例展示了如何设置和使用这些属性。文本部分则讲解了文本缩进、对齐方式、修饰线及文字颜色等属性,并提供了实用的代码示例。此外,还简要介绍了调试工具中的一些细节,如错误属性标识和属性生效状态的控制。
64 28
|
1月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
|
3月前
|
编解码 前端开发 开发者
【前端设计达人必备】揭秘CSS尺寸单位的魔力:从基础到实战,打造灵动响应式网页!
【8月更文挑战第26天】本文深入探讨了CSS中常用的尺寸单位,包括像素(px)、百分比(%)、视窗单位(vw/vh/vmin/vmax)、可伸缩相对单位(em/rem)以及Flexbox和Grid中的fr单位。通过具体案例展示了每种单位的特点及其适用场景。像素适用于固定尺寸元素;百分比和em/rem利于构建响应式布局;视窗单位适合全屏设计;fr单位则能有效管理复杂网格布局的空间分配。掌握这些单位有助于开发者设计出更加灵活、高质量的网页布局。
59 4
|
3月前
|
前端开发 Java UED
JSF 面向组件开发究竟藏着何种奥秘?带你探寻可复用 UI 组件设计的神秘之路
【8月更文挑战第31天】在现代软件开发中,高效与可维护性至关重要。JavaServer Faces(JSF)框架通过其面向组件的开发模式,提供了构建复杂用户界面的强大工具,特别适用于设计可复用的 UI 组件。通过合理设计组件的功能与外观,可以显著提高开发效率并降低维护成本。本文以一个具体的 `MessageComponent` 示例展示了如何创建可复用的 JSF 组件,并介绍了如何在 JSF 页面中使用这些组件。结合其他技术如 PrimeFaces 和 Bootstrap,可以进一步丰富组件库,提升用户体验。
55 0
|
3月前
|
前端开发 JavaScript 开发者
【前端革新力】React与CSS-in-JS完美邂逅:从styled-components到emotion,全面解析样式管理新趋势的实战应用与优势剖析!
【8月更文挑战第31天】CSS-in-JS 作为一种新兴的样式管理方式,近年来在前端社区受到广泛关注。它将样式嵌入 JavaScript,实现了样式与逻辑的高度耦合,提升了开发效率并解决了全局样式污染等问题。本文通过具体代码示例,探讨 CSS-in-JS 在 React 开发中的应用,并分享实践心得。首先介绍了 CSS-in-JS 的基本概念,然后详细展示了如何使用 styled-components 和 emotion 这两个流行库创建样式化组件。
151 0
|
3月前
|
前端开发
使用CSS样式化占位文本
使用CSS样式化占位文本
20 0
|
4月前
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
|
4月前
|
前端开发 JavaScript
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
|
3月前
|
前端开发 容器
CSS实现多行文本的展开收起
CSS实现多行文本的展开收起
40 0