【开源宝藏】30天学会CSS - DAY6 第六课 流光文字动画

【开源宝藏】30天学会CSS - DAY6 第六课 流光文字动画_第1张图片

第 0 步:项目结构

lighting-text/
    ├─ index.html
    └─ style.css
  1. index.html:包含列表
      ,其中每个
    • 放一个字母或符号。
    • style.css:设置背景、文字样式,以及关键帧动画(lighting)让文字逐个闪光。

第 1 步:编写 HTML 结构

index.html 中,核心就是一个无序列表

    ,每个
  • 对应一个字母/符号:

    DOCTYPE html>
    <html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <meta name="author" content="Milena Carecho">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>CSS Animationtitle>
        
        <link rel="stylesheet" type="text/css" href="style.css">
        
        <link href="https://fonts.googleapis.com/css?family=Lato:400,700" rel="stylesheet">
    head>
    <body>
        <ul>
            <li>Dli>
            <li>Eli>
            <li>Sli>
            <li>Ali>
            <li>Fli>
            <li>Ili>
            <li>Oli>
            <li>li>
            <li>Cli>
            <li>Sli>
            <li>Sli>
        ul>
    body>
    html>
    

    代码要点

    • 每个
    • 都是一个字母/符号组成的序列,比如 “D E S A F I O ♡ C S S”。
    • 标签引用了 Google Fonts 的 Lato 字体(可选)。
    • 其余信息如 charset, viewport 等是常规页面设定。

    第 2 步:全局样式与列表布局

    style.css 里,先写一些基础样式让页面内容居中,并设定背景色:

    body {
        height: 100vh;             /* 占满视窗高度 */
        display: flex;             /* 启用 Flex 布局 */
        justify-content: center;   /* 水平居中 */
        align-items: center;       /* 垂直居中 */
        font-family: 'Lato', sans-serif; /* 指定字体 */
        background-color: #272727; /* 深色背景 */
    }
    
    /* 
      去掉默认的列表样式,使用 flex 排列字母 */ ul { margin: 0; padding: 0; display: flex; }

    解释

    1. height: 100vh:让 body 占满整个浏览器高度。
    2. display: flex; align-items: center; justify-content: center;:让
        (以及文字)在页面居中。
      • background-color: #272727;:设置深灰色背景,使闪光效果更明显。
      • ul { display: flex; }:让列表项横向排列。

    第 3 步:文字的基础外观

    再来看看

  • 的初始样式与动画:

    ul li {
        list-style: none;   /* 去掉列表项符号 */
        color: #484848;     /* 默认字体颜色(深灰) */
        font-size: 88px;    /* 加大字号 */
        letter-spacing: 15px; /* 增加字母间距,让效果更突出 */
        animation: lighting 1.4s linear infinite; 
        /* 使用名为 lighting 的动画,时长1.4秒,线性播放并无限循环 */
    }
    

    解释

    1. color: #484848;:文字默认是深灰色,没有任何发光。
    2. font-size: 88px; letter-spacing: 15px;:让文字足够大并彼此间留有空隙,便于显示闪光。
    3. animation: lighting 1.4s linear infinite;
      • 调用名为 lighting 的关键帧,
      • 持续时间:1.4秒,
      • linear:匀速过渡,
      • infinite:重复播放。

    我们还没定义 @keyframes lighting,接下来就要完成它。


    第 4 步:定义关键帧 lighting

    这是本示例最核心的动画部分:

    @keyframes lighting {
        0% {
            color: #484848;
            text-shadow: none;
        }
        90% {
            color: #484848;
            text-shadow: none;
        }
        100% {
            color: #fff900; /* 亮黄色 */
            text-shadow: 0 0 7px #fff900, 0 0 50px #ff6c00;
        }
    }
    
    动画阶段分析
    1. 0%90%
      • 文字颜色保持 #484848,即深灰色;
      • text-shadow: none;,无阴影。
      • 这意味着动画的前 90% 时间,文字不会闪光。
    2. 100%
      • 文字切换成亮黄色 #fff900
      • text-shadow: 0 0 7px #fff900, 0 0 50px #ff6c00;,添加多重阴影
        • 一个较短的发光 0 0 7px #fff900
        • 一个更大、更远的发光 0 0 50px #ff6c00
      • 整体看起来像是突然闪亮了一下。
    3. 因为整个动画是 1.4s 线性循环,当到达 100% 时,瞬间回到初始状态 (0%) 再次开始,如此无限重复。
    4. 结果:每个字母在 1.4 秒的周期里,有 0.14 秒(10%)的时间会闪光。

    第 5 步:让每个字母“依次”闪光

    仅仅写上述动画,每个

  • 同时闪光。但示例中,每个字母的闪光是依次出现、互相错开的,这是通过 animation-delay 来控制。请看以下代码:

    ul li:nth-child(1) { animation-delay: 0s;    }
    ul li:nth-child(2) { animation-delay: 0.1s; }
    ul li:nth-child(3) { animation-delay: 0.2s; }
    ul li:nth-child(4) { animation-delay: 0.3s; }
    ul li:nth-child(5) { animation-delay: 0.4s; }
    ul li:nth-child(6) { animation-delay: 0.5s; }
    ul li:nth-child(7) { animation-delay: 0.6s; }
    ul li:nth-child(8) { animation-delay: 0.7s; }
    ul li:nth-child(9) { animation-delay: 0.8s; }
    ul li:nth-child(10){ animation-delay: 0.9s; }
    ul li:nth-child(11){ animation-delay: 1s;   }
    

    工作原理

    • 第一个字母(D)从 0s 开始动画,第二个字母(E)从 0.1s 后开始动画,第三个字母(S)从 0.2s 开始……
    • 所以每个字母的闪光时间错开了 0.1s,形成一种流动的闪光效果,而不是整排文字一起闪。
    • 当动画周期结束时(1.4秒),它们又会再次从各自延迟开始新一轮闪动,于是循环不断。

    你可以根据需求修改延迟,比如 0.08s0.15s 等,或者在 .li:nth-child(N) 里改成想要的数值来调整节奏。


    6. 运行效果与可选调整

    现在,打开 index.html 预览,你会看到:

    1. 深灰色背景中,一排大号文字“D E S A F I O ♡ C S S”。
    2. 每个字母默认处于暗灰色,当到达各自的动画末端(100%)时,会瞬间切换为亮黄色并带有橙色的强烈光晕。
    3. 整个序列依次闪光,一波接一波,显得酷炫又有节奏感。

    可选改动

    • 闪光时长:把 lighting 1.4s linear infinite; 里的 1.4s 改成更大或更小,如 2s(闪光慢一点)或 1s(更快)。
    • 发光颜色
      • color: #fff900; 可以改成别的亮色,比如 #00ff00#ffffff
      • text-shadow: 0 0 7px #fff900, 0 0 50px #ff6c00; 也可以改成你喜欢的组合。比如把 #ff6c00 换成 #00ffff,就会有蓝绿色的外光。
    • 默认颜色#484848 可改成黑色或更浅灰,看个人审美。
    • 字母个数与延迟:可以增加或减少
    • ,并对应增加 nth-child(N) 规则;动画延迟也可微调。
    • 闪光占比:在 @keyframes lighting 中,0%90% 同样保持暗色,而 100% 才亮起——意味着只有最后的 10% 时间在闪光。你可以把 90% 改成 80%70% 等,让闪光时段更长。

    总结

    通过这一步步的解析,你已经掌握了:

    1. Flex 布局:将文字排成一行并居中显示;
    2. 关键帧动画 + 延时:让每个字母按照不同的节奏进行闪亮;
    3. text-shadow 多重阴影:实现多层次的发光效果;
    4. nth-child:精准控制每个
    5. 的动画延迟,让文字依次闪动。

    不需要任何 JavaScript,就能制作出一个漂移有序、富有节奏感的文字闪光动画。希望本教程能让你理解 CSS 动画的乐趣与强大,并在实际项目中加以灵活运用。祝你学习与创作愉快!

你可能感兴趣的:(开源宝藏,开源,css,前端)