c语言编程笔录

首页 >   > 笔记大全

笔记大全

详解CSS实现文字动画的N种技巧

更新时间:2023-10-10

CSS动画简述

CSS动画目前已经是Web开发领域中最为流行的技术之一,这是因为CSS动画可以允许开发者在不需要额外的JavaScript和Flash的情况下轻易地添加动画效果。使用CSS动画可以实现的不仅仅是图片和形状的变换,还包括文字。在这篇文章中,我们将探讨CSS动画实现文字动画的方法。

技巧1:使用字母动画

对于标签中的文本,我们可以通过将它们分割成单独的字母,然后对每个字母应用动画效果来创建文字动画。下面的CSS代码中,在每个字符之间添加了0.1秒的延迟来实现字母逐个展现的动画效果。

            .animation {
            font-size: 3em;
            line-height: 1.2em;
            text-transform: uppercase;
            white-space: nowrap;
            overflow: hidden;
            animation: showup 1s linear both;
            }
            @keyframes showup {
            from {
                width: 0;
            }
            to {
                width: auto;
            }
            }
            .animation span {
            display: inline-block;
            animation: showup 1s linear both;
            animation-delay: calc(0.09s * var(--char));
            --char: 0;
            }
            

技巧2:使用clip-path属性

另一个创建文字动画的方法是使用CSS的clip-path属性。将文本的背景图像制作成一个蒙版,然后使用动画来让蒙版从左到右移动,以此来逐步显示文本。使用clip-path属性的好处是,您可以实现独特的动画效果,如下面的CSS代码所示,可在文本周围创造一个褪色的效果,类似于文本被风吹散的感觉。

            .animation {
            position: relative;
            width: fit-content;
            line-height: 1;
            margin: 0 auto;
            padding: 0 0 0 0.5em;
            background: url("http://i.stack.imgur.com/CUcWL.png");
            background-color: blue;
            background-size: auto 100%;
            background-clip: text;
            -webkit-background-clip: text;
            color: transparent;
            animation: showup 4s linear infinite;
            }
            @keyframes showup {
            0%, 20% {
                -webkit-clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 0);
                        clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 0);
            }
            90%, 100% {
                -webkit-clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 0);
                        clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 0);
            }
            20.1%, 70% {
                -webkit-clip-path: polygon(0 0, 0 100%, 2% 100%, 2% 0, 6% 0, 6% 100%, 10% 100%, 10% 0, 14% 0, 14% 100%, 18% 100%, 18% 0, 22% 0, 22% 100%, 26% 100%, 26% 0, 30% 0, 30% 100%, 34% 100%, 34% 0, 38% 0, 38% 100%, 42% 100%, 42% 0, 46% 0, 46% 100%, 50% 100%, 50% 0, 54% 0, 54% 100%, 58% 100%, 58% 0, 62% 0, 62% 100%, 66% 100%, 66% 0, 70% 0, 70% 100%, 100% 100%, 100% 0);
                        clip-path: polygon(0 0, 0 100%, 2% 100%, 2% 0, 6% 0, 6% 100%, 10% 100%, 10% 0, 14% 0, 14% 100%, 18% 100%, 18% 0, 22% 0, 22% 100%, 26% 100%, 26% 0, 30% 0, 30% 100%, 34% 100%, 34% 0, 38% 0, 38% 100%, 42% 100%, 42% 0, 46% 0, 46% 100%, 50% 100%, 50% 0, 54% 0, 54% 100%, 58% 100%, 58% 0, 62% 0, 62% 100%, 66% 100%, 66% 0, 70% 0, 70% 100%, 100% 100%, 100% 0);
            } 
            70.1%, 90% {
                -webkit-clip-path: polygon(0 0, 0 100%, 10% 100%, 10% 0, 14% 0, 14% 100%, 18% 100%, 18% 0, 22% 0, 22% 100%, 26% 100%, 26% 0, 30% 0, 30% 100%, 34% 100%, 34% 0, 38% 0, 38% 100%, 42% 100%, 42% 0, 46% 0, 46% 100%, 50% 100%, 50% 0, 54% 0, 54% 100%, 58% 100%, 58% 0, 62% 0, 62% 100%, 66% 100%, 66% 0, 70% 0, 70% 100%, 100% 100%, 100% 0);
                        clip-path: polygon(0 0, 0 100%, 10% 100%, 10% 0, 14% 0, 14% 100%, 18% 100%, 18% 0, 22% 0, 22% 100%, 26% 100%, 26% 0, 30% 0, 30% 100%, 34% 100%, 34% 0, 38% 0, 38% 100%, 42% 100%, 42% 0, 46% 0, 46% 100%, 50% 100%, 50% 0, 54% 0, 54% 100%, 58% 100%, 58% 0, 62% 0, 62% 100%, 66% 100%, 66% 0, 70% 0, 70% 100%, 100% 100%, 100% 0);
            }
            }
            

技巧3:使用文字阴影

通过为文本添加无限彩虹阴影,您可以为文本创造一个有趣的视觉效果。下面是一段CSS代码示例:

            .animation {
            font-size: 10em;
            margin: 0;
            padding: 0;
            background-color: #222;
            color: transparent;
            -webkit-text-fill-color: transparent;
            text-shadow: 0 0 30px rgba(0, 0, 0, 0.5);
            animation: shadow 3s infinite linear;
            }
            @keyframes shadow {
            to {
                text-shadow:
                    -3px -3px 0 rgb(111, 191, 110),
                    3px -3px 0 rgb(252, 212, 64),
                    3px 3px 0 rgb(255, 107, 107),
                    -3px 3px 0 rgb(14, 201, 255);
            }
            }
            

技巧4:使用动态文字动画

这种类型的动画不仅创造了更可视化的效果,而且同时可以传达信息和故事。动态文字通常会在鼠标指针悬停在文本上时被触发。下面是一段使用CSS实现的动态文字动画的示例代码:

            .animation {
            position: relative;
            display: inline-block;
            font-size: 9em;
            color: #fff;
            font-family: 'Montserrat', sans-serif;
            letter-spacing: 1px;
            text-transform: uppercase;
            will-change: transform;
            }
            .animation:before {
            content: attr(data-text);
            position: absolute;
            top: 0;
            left: 0;
            color: #00aaff;
            text-shadow: -1px -1px 5px #00aaff,
                        1px -1px 5px #00aaff,
                        1px 1px 5px #00aaff,
                        -1px 1px 5px #00aaff;
            } 
            .animation:hover:before {
            transform: translateX(100%);
            transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
            }