纯CSS打字动画的实现示例


Posted in HTML / CSS onAugust 05, 2022

在一些技术网站中,经常会看到这样一种展示效果:逐个显示一段文本中的字符,模拟出一种打字的效果。通过这种方式可以显著地提升网页设计感。

在大部分应用中,都是通过使用 JS 脚本实现该方案,虽然效果很好,但是对于使用 JS 来操作出表现层的展示,总感觉有点奇怪,所以尝试下只使用 CSS 来实现我们的打字动画~

通过CSS,无法实现像 JS 那样一个字一个字的绘制在页面上,那不如就换一个思路,让容器宽度成为动画的主体,让文字逐渐显示出来。具体来说,最开始容器的宽度是0,随着动画的推进,一个字一个字的扩张到它应用的宽度。(需要注意,该方案仅适用于单行文本)

按照我们预想的思路,很容易完成下述代码。

@keyframes typing {
    from {
        width: 0;
    }
}

h1 {
    width: 188px;
    animation: typing 8s;
    white-space: nowrap;
    overflow: hidden;
}

纯CSS打字动画的实现示例

但是从实现效果上看,并不是那么理想,我们需要的动画效果是逐字呈现而不是这样的平滑显示。

对于这个问题,很显然,我们会想到使用 steps() 来修复,但是具体需要分多少步又是摆在我们面前的另一个难题。

要解决这个问题,就需要说到 ch 这个 CSS 中基本用不到的长度单位,它代表元素所用字体中“0”这一字形的宽度,如果使用的是等宽字体的话,那么“0”字形的宽度和其他所有字形的宽度是一样的,所以很容易想到要解决上述问题,其实只要:

  • 将元素文字设置为等宽字体(实际上,应用打字动效的文字都场景大多是为展示代码的形式,大部分情况下也都是使用都等宽字体)
  • 元素的 width 设置为该元素中文字的个数
  • 同样,将 animationsteps() 也设置为元素的个数
@keyframes typing {
    from {
        width: 0;
    }
}

h1 {
    font-family: "Cascadia Code", Menlo, Monaco, "Courier New", monospace;
    width: 12ch;
    animation: typing 8s steps(12);
    white-space: nowrap;
    overflow: hidden;
}

纯CSS打字动画的实现示例

已经基本实现我们想要的效果了,最后只要加上一个闪烁的光标即可。可以通过使用伪元素生成光标,并通过 opacity 属性来实现闪烁效果:

@keyframes caret {
    50% {
        opacity: 0;
    }
}

h1::after {
    content: "";
    position: absolute;
    right: 0;
    width: 2px;
    top: 6px;
    bottom: 6px;
    background: #000;
    animation: caret 1s steps(1) infinite;
}

到此这篇关于纯CSS打字动画的实现示例的文章就介绍到这了,更多相关CSS打字动画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
May 07 HTML / CSS
前端隐藏出边界内容的实现方法
Apr 14 HTML / CSS
纯css3使用vw和vh实现自适应的方法
Feb 09 HTML / CSS
CSS3 rgb and rgba(透明色)的使用详解
Sep 25 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
Nov 02 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
Oct 08 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
Jan 07 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
简单介绍HTML5中的文件导入
May 08 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
Oct 22 HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 HTML / CSS
HTML5实现移动端点击翻牌功能
Oct 23 HTML / CSS
新的CSS 伪类函数 :is() 和 :where()示例详解
前端使用svg图片改色实现示例
Jul 23 #HTML / CSS
详解flex:1什么意思
Jul 23 #HTML / CSS
CSS子盒子水平和垂直居中的五种方法
Jul 23 #HTML / CSS
如何用H5实现好玩的2048小游戏
Jul 23 #HTML / CSS
css让页脚保持在底部位置的四种方案
Jul 23 #HTML / CSS
浅谈为什么我的 z-index 又不生效了
Jul 15 #HTML / CSS
You might like
人族 Terran 魔法与科技
2020/03/14 星际争霸
我的论坛源代码(六)
2006/10/09 PHP
PHP代码优化技巧小结
2015/09/29 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python中pip的安装与使用教程
2018/08/10 Python
Python列表(List)知识点总结
2019/02/18 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python 实现多维数组转向量
2019/11/30 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
社区工作者思想汇报
2014/01/13 职场文书
党建工作先进材料
2014/05/02 职场文书
企业理念标语
2014/06/09 职场文书
新学期开学标语
2014/06/30 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
创业计划书之面包店
2019/09/17 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技