CSS3_01:玩转文字渐变特效动画,这篇文章满足你,实现方式+案例完整源码

news2024/10/5 15:23:15

这里后面会陆续出一个关于css动画系列文章,关注布衣前端,实时获取。

在前端开发过程中,有时候需要特别显示页面某个文字特效,这时普通的文字颜色或者阴影已经无法满足需求。此时,css的线性渐变就派上用场了。

文字渐变用到的css技术栈

linear-gradient(0deg, #00DFA2 25%, #F6FA70);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
filter: drop-shadow(2px 2px 0.1rem #fff);
animation: variation 5s cubic-bezier(0.87, 0, 0.13, 1) infinite

最终效果动态图片
在这里插入图片描述
仔细看,一共五行文字,第一行是普通文字没加任何特效,第二行时线性渐变的角度补间动画效果,从0deg到330deg,顺时针方向的效果,当然可以改成逆时针,呈现另一种效果。最后一行文字是利用盒子背景中心位置产生的特效。

文字渐变原理

第二行文字特效实现方式:定义一个普通的盒子,这里是li标签,里面增加文字,增加filter模糊和设置元素背景background-clip,将文本填充元素背景,设置文本填充颜色为透明,再加上文字间距,背景background配置上线性渐变linear-gradient,至少两种颜色,此时文字渐变效果就完成了,动画部分可选。

css代码

.gradient-text {
    background: linear-gradient(0deg, #00DFA2 25%, #F6FA70);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-size: 64px;
    font-weight: bold;
    letter-spacing: -.5px;
    filter: drop-shadow(2px 2px 0.1rem #fff);
    animation: variation 5s cubic-bezier(0.87, 0, 0.13, 1) infinite;
}

/* 文字渐变补间动画 */
@keyframes variation {
  from {
    background: linear-gradient(0deg, #00DFA2 25%, #F6FA70);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  to {
    background: linear-gradient(330deg, #00DFA2 25%, #F6FA70);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

注意:这里进行补间动画时,需要写填充元素背景方式,否则不生效。

HTML代码

<ul>
  <li class="gradient-text">欢迎关注</li>
</ul>

附案例全部源码

这里的源码,关于所有线性渐变颜色、角度、颜色占比和动画方式都是可以调节的,打开脑洞,创作无限可能的文字特效。这里起到抛砖引玉作用,不是唯一效果。

感兴趣的小伙伴,可以把源码复制到html文件,用浏览器打开,看看本地效果,还可以自己f12进行调整样式,颜色等等。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>文字渐变效果</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      body {
        display: flex;
        flex-direction: column;
        align-items: center;
        height: 100vh;
        justify-content: center;
        background-color: #151515;
      }
      li {
        list-style: none;
      }
      
      .text-normal, 
      .gradient-text,
      .gradient-text-up,
      .gradient-text-half,
      .gradient-text-bias {
        font-size: 64px;
        color: #B4A5A5;
        font-weight: bold;
      }
      .gradient-text {
          background: linear-gradient(0deg, #00DFA2 25%, #F6FA70);
          background-clip: text;
          -webkit-background-clip: text;
          -webkit-text-fill-color: transparent;
          letter-spacing: -.5px;
        filter: drop-shadow(2px 2px 0.1rem #fff);
        animation: variation 5s cubic-bezier(0.87, 0, 0.13, 1) infinite;
      }
      /* 文字渐变补间动画 */
      @keyframes variation {
        from {
          background: linear-gradient(0deg, #00DFA2 25%, #F6FA70);
          background-clip: text;
          -webkit-background-clip: text;
          -webkit-text-fill-color: transparent;
        }
        to {
          background: linear-gradient(330deg, #00DFA2 25%, #F6FA70);
          background-clip: text;
          -webkit-background-clip: text;
          -webkit-text-fill-color: transparent;
        }
      }
      /* 渐变各占一半 */
      .gradient-text-half {
        background: linear-gradient(0deg, #14FFEC 50%, #F6C90E 50%);
        background-clip: text;
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        letter-spacing: -.5px;
      }
      /* 斜边各占一半 */
      .gradient-text-bias {
        background: linear-gradient(347deg, #F6C90E 50%, #14FFEC 50%);
        background-clip: text;
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        letter-spacing: -.5px;
      }
      .gradient-text-up {
          background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
          background-clip: text;
          -webkit-background-clip: text;
          -webkit-text-fill-color: transparent;
          background-size: 400% 400%;
          letter-spacing: -0.5px;
          animation: gradientText 20s cubic-bezier(0.32, 0, 0.67, 0) infinite;
      }
      @keyframes gradientText {
          0% {
              background-position: 200% 100%;
          }
          50% {
              background-position: -200% 100%;
          }
          100% {
              background-position: 0% -200%;
          }
      }
</style>
  </head>
  <body>
    <ul>
      <li class="text-normal">普通文字</li>
      <li class="gradient-text">欢迎文字</li>
      <li class="gradient-text-half">布衣前端</li>
      <li class="gradient-text-bias">布衣前端</li>
      <li class="gradient-text-up">布衣前端</li>
    </ul>
  </body>
</html>

小伙伴们有不明白的地方,评论区见。更多前端文章资源,藏于 布衣前端 vx gongzhonghao

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Difference of Normals Based Segmentation

文章目录 例子官网的可视化图片流程C cmakelist 参考 记录翻译一下pcl中的例子 实现的“法线差”功能&#xff0c;用于基于比例的无组织点云分割。 例子 官网的可视化图片流程 C 代码流程&#xff1a; 设置输入点云相关参数。图片左上设置两个半径求取法相量点云&#xff0c…

安装VastBase G100 v2.2 Build 12

1、防火墙设置 1.1 关闭防火墙和selinux 1.1.1 关闭防火墙 systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld1.1.2 关闭selinux vim /etc/selinux/config1.2 修改hosts文件,添加实际的IP地址和主机名 vi /etc/hosts 1.3…

【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

win10修改本地host文件,增加自定义本地访问域名127.0.0.1(超详细)

1. 按winR&#xff0c;输入C:\Windows\System32\drivers\etc打开host文件所在位置&#xff1a; 2.右键hosts文件–>点击属性->点击安全&#xff0c;把所有组用户名权限打开&#xff1a; 右键属性切换到安全 配置好之后点击应用-确定 最后验证一下 验证 5. winR&#x…

作为前端开发,你了解MutationObserver吗?

目录 前言 演变过程 基础概念 MutationObserver observe(target, options) attributes&#xff1a;是否监听标签属性变化 childList&#xff1a;是否监听子节点变化 characterData&#xff1a;是否监听文本节点内容的变化 attributeOldValue&#xff1a;是否记录属性变…

前端058_权限系统(身份认证+退出+刷新令牌)_刷新令牌获取新的认证信息

当访问令牌 access_toke 过期,后台会响应状态码 401 ,通过刷新令牌 refresh_toke 获取新令牌。获取后重新发送引发获取新令牌的请求。 1、请求拦截401错误实现刷新令牌请求 所有的请求后台数据,都是通过在 src/utils/request.js 封装的 axios 对象进行发送请求,所以当调…

蓝牙标签协议

1.Request write block size command CMD DATA 0x01 无 Response for write block size command CMD DATA (short) 0x01 Block size 注意&#xff1a;short是低位在前&#xff0c;高位在后 2.Request write screen command CMD DATA 0x02 Image length(int) Imag…

GIS软件中网络分析的5种应用

什么是网络分析&#xff1f;几乎每个人都需要一个网络分析的类型在他们的生活中。 例如&#xff0c;去海滩的最短路线是什么&#xff1f;应该在哪里建一所医院来最好地服务一个社区&#xff1f;如何优化运输车队&#xff1f; 以下是5种最常见的网络分析类型&#xff1a;点对点…

原来Allegro工程师还分这几个等级,薪资差距好大

随着电子设计领域的不断发展&#xff0c;Allegro工程师的需求也越来越高&#xff0c;在发展过程中&#xff0c;不同等级的Allegro工程师之间存在着薪资和工作范围上的差异&#xff0c;那么你知道不同等级的Allegro工程师有什么不同吗&#xff1f; NO.1初级Allegro工程师 ①分布…

HYA-D-M5、HYA-C-01、HYA-D-02气控电磁阀

HY-C-M5、HY-D-01、HY-D-02、HYA-D-M5、HYA-C-01、HYA-D-02、H280-4-D-S-L、H280-5-D-D-L、H380-5-G-S-L、H380-5-D-S-L电磁阀分电控及气控。维护须知&#xff1a; 1&#xff0c;安装时&#xff0c;请注意气体流动方向及接管是否正确&#xff0c;电压是否符合要求2.请注意防尘…

内部知识库搭建的意义何在?可以给哪些内部人员使用?

随着企业的不断发展和壮大&#xff0c;内部知识管理成为了越来越重要的一项工作。而内部知识库搭建则是内部知识管理的重要手段之一。本文将介绍内部知识库搭建的意义以及可供哪些内部人员使用&#xff0c;以及如何搭建一个高效的内部知识库。 内部知识库搭建的意义&#xff1…

拓展冒泡排序

冒泡排序 冒泡排序的动态演示 比较相邻的元素。 1&#xff0c;如果第一个比第二个大&#xff08;升序&#xff09;&#xff0c;就交换他们两个。 2&#xff0c;对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。这步做完后&#xff0c; 最后的元素会是…

解决Antd Tree组件,二次点击时不取消选中,保持高亮

一、问题概述 ant design 提供的 Tree树组件 支持点击高亮树节点&#xff0c;再次点击取消高亮。 默认效果如下&#xff1a; 然而大多数业务场景下&#xff0c;我们希望多次点击同一个节点不会取消他的选中效果。 二、解决方案 监听onSelect时间&#xff0c;并使用select…

PG系列1:windows下安装PG15

文章目录 一. 下载PG二. 开始安装PG2.1 开始安装2.2 验证 一. 下载PG 官网地址: https://www.postgresql.org/选择Download 选择windows Download the installer 点击下载 二. 开始安装PG 2.1 开始安装 这个安装很简单&#xff0c;直接下一步即可&#xff0c;此处…

5.Java内存模型之JMM

Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗&#xff1f; JMM和volatile他们两个之间的关系&#xff1f; JMM没有那些特征或者它的三大特征是什么&#xff1f; 为什么要有JMM&#xff0c;它为什么出现&#xff1f;作用和功能是什么&#xff1f; hap…

智能井盖:智慧城市下的井盖管理新模式

随着全球城市化进程的加快&#xff0c;智慧城市的概念越来越受到关注。井盖作为城市的基础设施之一&#xff0c;井盖的安全管理成为城市管理者关注的重要问题。传统的井盖管理方式面临诸多挑战&#xff0c;如人力成本高、巡检效率低、隐患难以发现等。随着智慧城市的发展&#…

leangoo领歌敏捷工具中,如何快速查看项目内所有任务卡片

项目管理员能不能快捷的查看整个项目内的所有任务&#xff1f; 能不能快捷查看项目内某一个成员的所有任务&#xff1f; 能不能快捷的在项目内通过一些条件选择查看任务&#xff1f; 可以导出项目内某一个人的所有任务吗&#xff1f;方便做一些统计 等等... 这些现在Leang…

路径规划 | 图解Informed RRT*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 Informed RRT*原理2 Informed RRT*流程3 ROS C实现4 Python实现5 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&#xff1b;局部…

超全、超详细的Redis学习笔记总结

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

「2024」预备研究生mem-消序核心原则

一、消序 二、核心原则 相同备选池 三、练习题