纯CSS实现海浪文字效果

news2024/9/25 4:51:17

如图所示,这是一个很炫酷的文字波动效果,文字呈现出一个海浪波动的效果,这样的动画效果可以显著加强文案本身的含义。本文将解析如何使用纯CSS实现这个特效,基于这个动图可以分析出实现这个效果的主要功能要点:

  • 整体呈现出3D文案效果
  • 文案呈现波动状态动画
  • 文案有渐变颜色的变化
  • 文案在变化过程中有倾斜分层的效果

1. 基础样式

首先我们从布局和基础样式开始。

通过上面的图片可以看出动画中的内容是由多个层叠在一起的效果,所以这里我们创建多个标签渲染文本。

<div id="ui">
  <div class="text">ocean</div>
  <div class="text">ocean</div>
  ...
</div>

如果你使用了pug模板渲染,可以使用以下代码简化且方便更改文案:

- var $text = 'ocean';

#ui
  - for (i = 0; i < 26; i++)
    .text #{$text}

body CSS 代码:

body {
  background: rgba(10, 20, 40, 1);
  height: 100vh;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  perspective: 500px;
}
  • 背景色rgba(10, 20, 40, 1) 设定了一个深色的背景,为文本提供了清晰的对比。
  • 高度与视口height: 100vh; 使页面高度充满整个视口高度,overflow: hidden; 隐藏了超出视口的内容。
  • 弹性盒子布局display: flex; 结合 justify-content: center;align-items: center; 将内容水平和垂直居中。
  • 透视效果perspective: 500px;body上设置透视效果,为子元素的3D变换提供视觉深度。
2. 准备3D变换
div {
  will-change: transform;
}

#ui {
  transform-style: preserve-3d;
}
  • will-change: transform; 告知浏览器该元素即将进行变换,这有助于浏览器优化渲染性能。
  • transform-style: preserve-3d;#ui元素上启用,确保其子元素的3D变换被保留,而不是被压平显示。
3. 文本样式与动画

接下来是文本的具体样式和动画定义。

  • 混合模式mix-blend-mode: screen; 使文本颜色与背景色以屏幕混合模式混合,增加视觉效果。
  • 3D变换保留:再次设置transform-style: preserve-3d;
#ui .text {
  position: absolute;
  font-size: $fontSize;
  color: #fff;
  line-height: $fontSize;
  font-family: 'Anton', sans-serif;
  padding: 20px 0;
  mix-blend-mode: screen;
  transform-style: preserve-3d;
  @for $i from 1 through 26 {
    // 循环生成样式
  }
}
4. Sass循环生成样式与动画
  • 循环:使用Sass的@for循环,为每个.text的子元素生成独特的样式。
  • clip-path:使用clip-path属性为每个子元素定义不同的裁剪形状,通过计算每个元素的$key(索引减1)和$param(设为5)来调整裁剪路径的坐标。
  • 动画:每个子元素都应用了一个名为wave的动画,动画时长根据$key计算,实现不同步的动画效果。
@for $i from 1 through 26 {
  $key: $i - 1;
  $param: 5;
  &:nth-child(#{$i}) {
    clip-path: polygon(
        -30% + ($key * $param) 0,
        -20% + ($key * $param) 0,
        20% + ($key * $param) 100%,
        0% + ($key * $param) 100%
    );
    animation: wave 2000ms $key * 200 - 10000ms ease-in-out infinite alternate;
  }
}

重点使用clip-path将元素裁剪为倾斜的块,通过下面的动图中删除元素更为直观的可以看到每个元素裁剪后渲染到页面的效果。

5. 定义动画
@keyframes wave {
  0% {
    transform: translate(-50%, -50%) scale(0.9) rotateX(20deg) rotateY(20deg) rotateZ(0deg);
    color: rgba(0, 30, 100, 1);
  }
  100% {
    transform: translate(-50%, -50%) scale(1.1) rotateX(0deg) rotateY(0deg) rotateZ(00deg);
    color: rgba(50, 230, 255, 1);
  }
}
  • @keyframes wave 定义了一个名为wave的动画,该动画通过变换和颜色变化来创建波浪效果。
  • 起始状态(0%):元素首先被移动到其父元素的中心通过translate(-50%, -50%),然后稍微缩小scale(0.9)并绕X轴和Y轴旋转rotateX(20deg) rotateY(20deg),颜色设置为深蓝色rgba(0, 30, 100, 1)
  • 结束状态(100%):元素放大scale(1.1),旋转角度归零rotateX(0deg) rotateY(0deg) rotateZ(0deg),颜色变为亮蓝色rgba(50, 230, 255, 1)

通过检查元素可以更为直观的查看元素在实际动画过程中的形状变化。

6. 整合效果

将以上所有部分整合起来,你会看到一个充满动感的3D文本动画效果。通过给每个文本块设置不同的裁剪形状和动画延迟,营造出一种波浪般的视觉流动感。文本的颜色在动画过程中从深蓝色变为亮蓝色,增加了视觉层次和吸引力。

7. 最后

这个文本动画效果不仅展示了CSS的强大能力,还为Web设计师和开发者提供了新的创意空间。虽然现代浏览器大多支持CSS 3D变换和动画,使用时注意部分浏览器可能存在兼容性问题。

选择适合动画效果的字体和颜色组合,可以增强视觉效果。配置你喜欢的文案和颜色,有兴趣的可以尝试看看~


看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)

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

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

相关文章

室内小间距LED显示屏操作指南

随着LED显示技术的迅速发展&#xff0c;小间距LED显示屏在城市的各个角落逐渐普及。它不仅提升了城市形象&#xff0c;还丰富了人们的日常生活。小间距LED显示屏以其高清、节能等特点&#xff0c;广泛应用于各类室内场景&#xff0c;如会议室、展览馆、指挥中心等。然而&#x…

嵌入式鸿蒙系统开发语言与开发方法分析

大家好,今天主要给大家分享一下,HarmonyOS系统的主力开发语言ArkTS语言开发方法,它是基于TypeScript(简称TS)语言扩展而来。 第一:ArkTS语言基本特性 目的:声明式UI,让开发者以更简洁,更自然的方式开发高性能应用。 声明式 UI基本特性: 基本UI描述:ArkTS定义了各种装饰…

【STM32 Blue Pill编程】-定时器输入捕获与频率计数

定时器输入捕获与频率计数 文章目录 定时器输入捕获与频率计数1、定时器介绍2、硬件准备及接线2、模块配置2.1 定时器配置2.2 串口配置3、信号频率测量计算4、代码实现在本文中,将介绍在STM32CubeIDE中配置定时器的工作模式为输入捕获模式,并通过编程对外部输入信号进行频率计…

Prompt工程师压箱底绝活——Prompt的基本组成部分、格式化输出与应用构建

目前&#xff0c;大模型输出往往包含许多冗余信息。本文中&#xff0c;基于文心一言&#xff0c;我们给出了一种包含指令、输入数据、背景信息和输出提示的提示词结构&#xff0c;让大模型能够真正直击应用开发者的需求&#xff0c;严格执行开发者的指令&#xff0c;为大模型的…

opencv实战项目二十二:模板匹配定位对象位置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、opencv模板匹配介绍二、使用代码三、效果 前言 在现代计算机视觉领域&#xff0c;模板匹配是一种基础而强大的技术&#xff0c;它能够帮助我们在图像中找到…

k8s服务发布Ingress

Kubernetes暴露服务的方式目前只有三种&#xff1a;LoadBlancer Service、NodePort Service、Ingress&#xff0c;通俗来讲&#xff0c;ingress和之前提到的Service、Deployment&#xff0c;也是一个k8s的资源类型&#xff0c;ingress用于实现用域名的方式访问k8s内部应用。 In…

第 6 章图像聚类

本章将介绍几种聚类方法&#xff0c;并展示如何利用它们对图像进行聚类&#xff0c;从而寻找相似的图像组。聚类可以用于识别、划分图像数据集&#xff0c;组织与导航。此外&#xff0c;我们还会对聚类后的图像进行相似性可视化。 6.1 K-means聚类 K-means 是一种将输入数据划…

FLV 格式详解资料整理,关键帧格式解析写入库等等

FLV 是一种比较简单的视频封装格式。大致可以分为 FLV 文件头&#xff0c;Metadata元数据&#xff0c;然后一系列的音视频数据。 资料够多&#xff1a; FLV格式解析图 知乎用户 Linux服务器研究 画了一张格式解析图&#xff0c;比较全&#xff0c;但默认背景是白色&#xff…

2024年职业院校人工智能实训室方案解读(融入AIGC技术)

随着人工智能技术的飞速发展&#xff0c;职业院校作为技能型人才培养的重要基地&#xff0c;亟需加强人工智能实训室的建设&#xff0c;以应对市场需求和行业变革。该方案不仅涵盖了全面的人工智能教学内容&#xff0c;还融入了AIGC&#xff08;Artificial Intelligence Genera…

k8s笔记——kubebuilder实战

kubebuilder Kubebuilder 是一个基于 CRD 来构建 Kubernetes API 的框架&#xff0c;可以使用 CRD 来构建 API、Controller 和 Admission Webhook。 动机 目前扩展 Kubernetes 的 API 的方式有创建 CRD、使用 Operator SDK 等方式&#xff0c;都需要写很多的样本文件&#x…

​微图在线显示高程为什么与下载结果不一致

之前有客户向我们提出了在线显示的高程值和下载的数据高程值不一致的问题&#xff0c;这里解释一下不一致的原因。 在线显示 在线的情况分成两种&#xff0c;一种是浏览高程数据渲染地图&#xff0c;一种是非高程数据渲染地图&#xff0c;例如高清影像&#xff08;WGS84&…

小小GCD、LCM拿下拿下

目录 最大公约数&#xff08;GCD&#xff09; 最大公约数&#xff08;GCD&#xff09;求解&#xff1a; 一、辗转相除法 二、三目运算符 三、位运算 最大公约数&#xff08;GCD&#xff09;模板&#xff1a; 最大公约数&#xff08;GCD&#xff09;例题&#xff1a; 最…

SprinBoot+Vue酒店管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验

【AR眼镜&#xff1a;重新定义远程会诊体验】 在快速发展的医疗领域&#xff0c;安宝特医疗AR眼镜以其尖端技术和创新功能&#xff0c;引领远程会诊的未来&#xff0c;致力于为为医生和患者带来更高效、精准和无缝的医疗体验。 探索安宝特医疗AR眼镜如何在医疗行业中引领新风潮…

DolphinScheduler应用实战笔记

DolphinScheduler应用实战笔记 一、前言二、DS执行SQL或存储过程二、DS调用DataX同步数据三、DS调用HTTP接口四、DS依赖(DEPENDENT)节点五、DS SPARK 节点六、DS Flink 节点七、DS Flink 节点八、DS SQL 节点九、DS Java程序十、DS Python节点 一、前言 DolphinScheduler&…

Java实现在线聊天室

分为客户端和服务器端两个部分。服务器负责处理客户端之间的通信&#xff0c;客户端则提供一个用户界面来发送和接收消息。 技术栈 Java语言SocketSwingUI 要点 一个服务端&#xff0c;多台客户端每个客户端登录时输入用户名消息格式化&#xff1a;服务器接收到消息时&#…

数据资产管理:真能推动数据要素市场发展还是只是空谈?

数据资产管理&#xff1a;真能推动数据要素市场发展还是只是空谈&#xff1f; 前言数据资产管理 前言 数据已成为企业和组织的重要资产&#xff0c;其价值的充分发挥对于推动业务发展和提升竞争力至关重要。数据资产管理作为一种有效的管理手段&#xff0c;正逐渐受到广泛关注…

Open Source, Open Life 第九届中国开源年会论坛征集正式启动

中国开源年会 COSCon 是业界最具影响力的开源盛会之一&#xff0c;由开源社在2015年首次发起&#xff0c;而今年我们将迎来第九届 COSCon&#xff01; 以其独特定位及日益增加的影响力&#xff0c;COSCon 吸引了越来越多的国内外企业、高校、开源组织/社区的大力支持。与一般企…

java基础(1)数据类型,运算符,逻辑控制语句以及基本应用

目录 ​编辑 1.前言 2.正文 2.1数据类型与变量 2.1.1字面常量 2.1.2数据类型 2.1.3变量 2.1.3.1整型 2.1.3.2浮点型 2.1.3.3字符型 2.1.3.4布尔型 2.1.4类型转换与类型提升 2.1.4.1字符串的拼接 2.1.4.2整型转字符串 2.1.4.3字符串转整数 2.2运算符 2.2.1算术运…

小红书笔记数单日突破1.3万,8月全网都被这只猴子刷屏了!

8月20日早上10点&#xff0c;《黑神话&#xff1a;悟空》正式发布后立刻席卷全网&#xff0c;众多玩家在游戏正式发布后火速进入游戏界面&#xff0c;甚至有多家公司宣布放假让员工玩《黑神话悟空》&#xff0c;不论是玩游戏的、还是不玩游戏的&#xff0c;都为之献上巨大的关注…