纯html+css实现打字效果


Posted in HTML / CSS onAugust 02, 2021

本文主要介绍了纯html+css实现打字效果,具有一定的参考价值,感兴趣的可以了解一下

效果图

纯html+css实现打字效果

分析
 

可以将动画看做三个不同的层次:

  • 最底层的文字
  • 中间挡住文字的背景
  • 最上层的光标

文字是静止的,而中间的背景和最上层的光标是动态的。
初始时,背景挡住所有的文字,光标在最左边。
动画进行时,背景和光标以相同的步伐从左往右移动。
动画结束时,背景不再遮挡文字,光标则在最右边闪烁。

纯html+css实现打字效果

代码
 

html
 

<div class="text">hello,world!</div>

css
 

:root {
    /* 字符数量 */
    --steps: 12;
    /* 动画时间 */
    --duration: 2.5s;
    /* 字体大小 */
    --fontSize: 50px;
    /* 光标大小 */
    --cursorSize: 20px;
}

.text {
    color: #333;;
    position: relative;
    display: inline-block;
    font-family: 'Courier New', Courier, monospace;
    font-size: var(--fontSize);
    line-height: 1;
}

.text::after {
    content: '';
    width: var(--cursorSize);
    height: var(--fontSize);
    background-color: black;
    z-index: 2;
    position: absolute;
    animation: blink 1s var(--duration) step-end infinite,
               moveCursor var(--duration) steps(var(--steps)) forwards;
}

.text::before {
    content: '';
    width: 100%;
    height: var(--fontSize);
    z-index: 1;
    position: absolute;
    background: linear-gradient(#fff, #fff) no-repeat top right;
    animation: showText var(--duration) steps(var(--steps)) forwards;
}

/* 光标闪烁动画 */
@keyframes blink {
    0% {
        background-color: black;
    }
    50% {
        background-color: transparent;
    }
    100% {
        background-color: black;
    }
}

/* 光标移动动画 */
@keyframes moveCursor {
    0% {
        left: 0%;
    }
    100% {
        left: 100%;
    }
}

/* 背景移动动画 */
@keyframes showText {
    0% {
        background-size: 100% 100%;
    }
    100% {
        background-size: 0% 100%;
    }
}

注意
字体必须是等宽字体。因为光标每次移动的距离是是根据字符的数量 / 总宽度来决定的。
 

在线演示
 

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

 
HTML / CSS 相关文章推荐
CSS3样式linear-gradient的使用实例
Jan 16 HTML / CSS
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
Mar 17 HTML / CSS
简单总结CSS3中视窗单位Viewport的常见用法
Feb 04 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
Aug 25 HTML / CSS
CSS实现聊天气泡效果
Apr 26 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
Jun 27 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
Jun 28 HTML / CSS
移动端html5 meta标签的神奇功效
Jan 06 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
Jul 24 HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 HTML / CSS
AmazeUI 列表的实现示例
Aug 17 HTML / CSS
Html5大屏数据可视化开发的实现
Jun 11 HTML / CSS
html form表单基础入门案例讲解
Jul 21 #HTML / CSS
带你了解CSS基础知识,样式
Jul 21 #HTML / CSS
CSS实现隐藏搜索框功能(动画正反向序列)
Jul 21 #HTML / CSS
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
html5实现点击弹出图片功能
Jul 16 #HTML / CSS
纯CSS3实现div按照顺序出入效果
CSS3中Animation实现简单的手指点击动画的示例
You might like
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php数组转成json格式的方法
2015/03/09 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
深入探究node之Transform
2017/07/20 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
python生成圆形图片的方法
2020/03/25 Python
python如何读写json数据
2018/03/21 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
档案室主任岗位职责
2014/02/12 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
信访工作经验交流材料
2014/05/23 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js