首页 > 其他分享 >CSS实现打字机动画效果

CSS实现打字机动画效果

时间:2022-12-13 09:13:01浏览次数:63  
标签:动画 forwards app 打字机 steps animation CSS typewriter

效果展示

image


CSS3 animation(动画)属性

语法:

animation: name duration timing-function delay iteration-count direction fill-mode play-state;
  • name
    • 设置绑定哪个keyframe
  • duration
    • 设置动画多少秒或毫秒完成
  • timing-function
    • 设置动画如何完成一个周期
  • delay
    • 设置动画在启动前的延迟间隔。
  • iteration-count
    • 定义动画的播放次数。
  • direction
    • 指定是否应该轮流反向播放动画。
  • fill-mode
    • 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
  • play-state
    • 指定动画是否正在运行或已暂停。

详细参考:

CSS3 animation(动画) 属性


打字机效果的实现

实现一个字一个字移动效果的关键知识:

@keyframes typewriter {
    to {
        left: 100%;
    }
}

animation: typewriter 3s steps(18) forwards;
  • steps函数

    • 有两个参数。
      • 第一个参数的意思是,这个动画分成多少段执行。这里就是文本有几个字,就分多少段。
      • 第二个参数表示分成几段后,是start还是end去执行动画。参数二有两个可选值start和end,默认是end。(这里没有使用到)
  • forwards(fill-mode属性)

    • 把物体动画地从一个地方移动到另一个地方,并让它停留在那里。
  • 设置等宽字体

    • 如果每一个字的宽度不一样,就无法保证每次移动会正好一个字的宽度。
    • font-family: monospace;
      

实现光标闪烁效果的关键知识

@keyframes flashing {
    to {
        opacity: 0;
    }
}

animation: flashing .3s ease-out forwards infinite; 
  • ease-out
    • 动画以低速结束。
  • forwards(fill-mode属性)
    • 把物体动画地从一个地方移动到另一个地方,并让它停留在那里。
  • infinite
    • 指定动画播放无限次(永远)

代码示例

下列代码,使用了JS来动态获取文字的个数,从而设置相应的steps值。

思路是:

一个before伪元素来遮挡文字。

一个after伪元素来模拟闪烁的光标。

两个伪元素一起做动画向后移动。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS实现打字机动画效果</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body {
            background-color: #000;
        }

        #app {
            display: inline-block;
            position: relative;
            top: 300px;
            left: 50%;
            /* 设置等宽字体 */
            font-family: monospace;
            color: #FFF;
            font-size: 32px;
            text-align: center;
            transform: translateX(-50%);
        }

        #app::before,
        #app::after {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            background-color: #000;
            content: '';
            /* animation: typewriter 3s steps(18) forwards; */
        }

        #app::after {
            width: 5px;
            border-radius: 1em;
            background-color: #fff;
            /* animation: typewriter 3s steps(18) forwards, flashing .3s ease-out forwards infinite; */
        }

        @keyframes typewriter {
            to {
                left: 100%;
            }
        }

        @keyframes flashing {
            to {
                opacity: 0;
            }
        }
    </style>
</head>
<body>
    <div id="app">welcome to my home</div>
    <script>
        // 选中app元素
        const app = document.querySelector('#app');
        // 获取文本长度
        const wordNum = app.outerText.length;
        // 创建一个style标签
        const styleElement = document.createElement('style');

        styleElement.innerHTML = `#app::before {animation: typewriter ${wordNum * 0.2}s steps(${wordNum}) forwards;}`;

        styleElement.innerHTML += `#app::after {animation: typewriter ${wordNum * 0.2}s steps(${wordNum}) forwards, flashing .3s ease-out forwards infinite;}`;
        
        document.head.appendChild(styleElement);
    </script>
</body>
</html>

标签:动画,forwards,app,打字机,steps,animation,CSS,typewriter
From: https://www.cnblogs.com/luckest/p/16977657.html

相关文章

  • 动画插件
     JS方案 greensockhttps://greensock.com/  CSS方案 animate.csshttps://animate.style/......
  • CSS特性和优先级
    CSS特性继承性某些属性,只需要给父级标签去加,则子级自然而然也会实现例:所有控制文字的属性都能继承,反之都不能继承/*1.color2.font-style、font-weight、font-size......
  • CSS基础属性
    CSS属性文字基本样式windows网页默认是微软雅黑/*1.字体大小:font-size2.字体粗细:font-weight3.字体样式:font-style4.字体类型:font-family5.字体类型:font属性连写......
  • 现代 CSS 高阶技巧,像 Canvas 一样自由绘图构建样式!
    在上一篇文章中--现代CSS之高阶图片渐隐消失术,我们借助了CSS@Property及CSSMask属性,成功的实现了这样一种图片渐变消失的效果:CodePenDemo--基于@property......
  • GitHub前50名的Objective-C动画相关库相关推荐,请自行研究
    GitHub的Objective-C的动画UI库其实是最多的一部分,GitHub有相当一部分的动画大牛,如JonathanGeorge,NickLockwood,Kevin,RomanEfimov,ChristopherWendel,JaredVerdi,PeterSte......
  • (带动画效果)卷积神经网络的讲解.pptx
    这学期我上的另一门课是本科生的《深度学习》,主要用的是吴恩达老师的《深度学习》视频课的内容。使用教材:吴恩达《深度学习》课程笔记课外参考书:《深度学习》,人民邮电出版社......
  • KeyShot Pro for mac(3D渲染和动画制作软件) v11.3.2.2激活版
    KeyShot11中文版是一款优秀的专业化实时3D渲染工具,使用它可以简化3d渲染和动画制作流程,并且提供最准确的材质及光线,渲染效果更加真实,KeyShot为您提供了使用CPU或NVIDIA......
  • 记录--记一次前端CSS升级
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助目前平台前端使用的是原生CSS+BEM命名,在多人协作的模式下,容易出现样式冲突。为了减少这一类的问题,提升研......
  • Html+CSS小案例项目:CSS开发小米商城电商产品展示效果
    关于电商产品展示,无论是从首页还是到栏目页,再到产品的详情页,产品展示效果不仅仅是在电商平台,在很多的企业网站也使用频繁,今天为大家分享一个HTML+CSS小案例项目:小米电商平......
  • 《动画师生存手册》高清电子版+中文字幕版视频合辑分享
    理查德·威廉姆斯是谁不用再强调了吧?《动画师生存手册》是一本深入解析动画绘制技巧的权威动画教材。全书深入讲解了以迪斯尼为代表的西方经典动画的创作原则、制作规律及......