纯 CSS 实现的的3种扫光效果

介绍一个比较常见的动画效果。

在日常开发中,为了强调凸显某些文本或者元素,会加一些扫光动效,起到吸引眼球的效果,比如文本的

或者是一个卡片容器,里面可能是图片或者文本或者任意元素

除此之外,还有那种不规则的图片,比如奖品图案

这些是如何实现的呢?一起看看吧

一、CSS 扫光的原理
CSS扫光动画的原理很简单,就是一个普通的、从左到右的、无限循环的位移动画

位移动画可以选择transform或者改变background-position都行。

至于扫光,我们只需要绘制一条斜向上45deg的线性渐变就可以了,示意如下

用CSS实现就是

background: linear-gradient(45deg, rgba(255,255,255,0) 40%, rgba(255, 255, 255, 0.7), rgba(255,255,255,0) 60%);
1.
准备工作做好了,下面看 3 种不同场景的实现

二、文本扫光
首先来看文本扫光。

由于扫光在文本内部,所以需要将这个渐变作为文本的颜色。文本渐变色,可以用backgrond-clip:text来实现,假设HTML是这样的

前端侦探

1. 为了让效果看起来更加明显,我们用一个比较粗的字体

h1{
font-size: 60px;
font-family: “RZGFDHDHJ”;
font-weight: normal;
color: #9747FF;
}
1.
2.
3.
4.
5.
6.
效果如下

现在我们通过background-clip来添加扫光,由于是裁剪背景,所以需要将当前文本颜色设置透明,建议通过-webkit-text-fill-color: transparent来设置,这样可以保留文本原有颜色,好处是其他地方,比如background-color可以直接使用原有文本颜色currentColor,具体实现如下

.shark-txt{
-webkit-text-fill-color: transparent;
background: linear-gradient(45deg, rgba(255,255,255,0) 40%, rgba(255, 255, 255, 0.7), rgba(255,255,255,0) 60%) -100%/50% no-repeat currentColor;
-webkit-background-clip: text;
}
1.
2.
3.
4.
5.
效果如下

最后就是让这个扫光动起来了。

由于是在文本内部,所以这里可以通过改变background-position来实现扫光动画了,动画很简单,如下

@keyframes shark-txt {
form{
background-position: -100%;
}
to {
background-position: 200%;
}
}
1.
2.
3.
4.
5.
6.
7.
8.
但是这样做没有动画效果,完全不会动。

这是因为背景默认尺寸是100%,根据背景偏移百分比的计算规则,当背景尺寸等于容器尺寸时,百分比完全失效,具体规则如下

给定背景图像位置的百分比偏移量是相对于容器的。值 0% 表示背景图像的左(或上)边界与容器的相应左(或上)边界对齐,或者说图像的 0% 标记将位于容器的 0% 标记上。值为 100% 表示背景图像的 右(或 下)边界与容器的 右(或 下)边界对齐,或者说图像的 100% 标记将位于容器的 100% 标记上。因此 50% 的值表示水平或垂直居中背景图像,因为图像的 50% 将位于容器的 50% 标记处。类似的,background-position: 25% 75% 表示图像上的左侧 25% 和顶部 75% 的位置将放置在距容器左侧 25% 和距容器顶部 75% 的容器位置。

https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-p…

(container width - image width) * (position x%) = (x offset value)
(container height - image height) * (position y%) = (y offset value)
1.
2.
所以这种情况下,我们可以手动改小一点背景尺寸,比如50%

.shark-txt {
-webkit-text-fill-color: transparent;
background: linear-gradient(45deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0) 60%) -100% / 50% no-repeat currentColor;
-webkit-background-clip: text;
animation: shark-txt 2s infinite;
}
1.
2.
3.
4.
5.
6.
这样就能完美实现文本扫光效果了

三、卡片容器扫光
还有一种比较常见的是容器内的扫光动效,通常是在一个圆角矩形的容器里。

像这种情况下就不能直接用背景渐变了,因为会被容器内的其他元素覆盖。所以我们需要创建一个伪元素,然后通过改变伪元素的位移来实现扫光动画了。

假设有一个容器,容器内有一张图片,HTML如下

1. 2. 3. 简单修饰一下

.card{
width: 300px;
border-radius: 8px;
background-color: #FFE8A3;
}
.card img{
display: block;
width: 100%;
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
效果如下

下面通过伪元素来创建一个扫光层,设置位移动画

.shark-wrap::after{
content: ‘’;
position: absolute;
inset: -20%;
background: linear-gradient(45deg, rgba(255,255,255,0) 40%, rgba(255, 255, 255, 0.7), rgba(255,255,255,0) 60%);
animation: shark-wrap 2s infinite;
transform: translateX(-100%);
}
@keyframes shark-wrap {
to {
transform: translateX(100%);
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
效果如下

最后直接超出隐藏就行了

.shark-wrap{
overflow: hidden;
}
1.
2.
3.
最终效果如下

也适合那种圆形头像

四、不规则图片扫光
其实前面两种情况已经适合大部分场景了,其实还有一种情况,就是那种不规则的图片扫光。这种图片无法直接通过overflow:hidden去隐藏多余部分,比如这样

很明显在图片之外的地方也出现了扫光,无法做到扫光在图形的"内部"。

那么,有没有办法根据图片的外形去裁剪呢?当然也是有办法的,这里需要用到CSS mask遮罩。

www.xbtourism.com
szdfyh.com
m.szdfyh.com
www.szdfyh.com
guohenghb.com

简单来说,就是直接将该图片作为遮罩图片,这样只有形状内的部分可见,形状外的直接被裁剪了

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

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

相关文章

如何在FastAPI中构建一个既安全又灵活的多层级权限系统?

title: 如何在FastAPI中构建一个既安全又灵活的多层级权限系统? date: 2025/06/14 12:43:05 updated: 2025/06/14 12:43:05 author: cmdragon excerpt: FastAPI通过依赖注入系统和OAuth2、JWT等安全方案,支持构建多层级权限系统。系统设计包括基于角色的访问控制、细粒度权…

大模型_Ubuntu24.04安装RagFlow_使用hyper-v虚拟机_超级详细--人工智能工作笔记0251

因为之前使用dify搭建了一个知识库,但是dify的效果,尤其是在文档解析方面是非常不友好的,虽然测试了,纳米的效果非常好,但是纳米只能容纳2000个文件,如果 你的知识库中有代码,sql文件等等&…

LeetCode - LCR 173. 点名

题目 LCR 173. 点名 - 力扣(LeetCode) 思路 首先对数组进行排序,使学号按顺序排列 在排序后的数组中,如果没有缺失的学号,那么每个元素应该等于其索引值 使用二分查找找到第一个不等于其索引的元素位置&#xff1…

VSCode如何优雅的debug python文件,包括外部命令uv run main.py等等

debug程序的方式有很多种。每一种方式都各有缺点:有的方式虽然优雅,但是局限性很大;有的方式麻烦,但是局限性小。 常规方式: 优点:然后可以观察所有线程。一劳永逸。缺点:就是写参数很麻烦,但是你可以让chatgpt等大模型帮你写。最最最优雅的方式: 优点:就是需要在代码…

[调试技巧]VS Code如何在代理模式下使用 MCP 工具?

在开发环境调试MCP,通过agent模式与大模型对话,并不能保证每次均正确调用tool。在阅读官方文档之后,得知以下小技巧。 添加 MCP 服务器后,您可以在代理模式下使用它提供的工具。要在代理模式下使用 MCP 工具 打开聊天视图 (CtrlAl…

京东零售基于Flink的推荐系统智能数据体系 |Flink Forward Asia 峰会实录分享

京东推荐系统的数据体系极其复杂,从召回、模型到策略和效果评估,每个环节都需要强大的海量数据处理能力支撑。然而,在实际运行中,整个数据链路面临着诸多挑战:如实时与离线数据的埋点口径不一致、数仓模型存在偏差、计…

[学习] 牛顿迭代法:从数学原理到实战

牛顿迭代法:从数学原理到实战 ——高效求解方程根的数值方法 文章目录 牛顿迭代法:从数学原理到实战一、引言:为什么需要牛顿迭代法?二、数学原理:几何直观与公式推导1. **核心思想**2. **几何解释**3. **收敛性分析*…

使用 Git 将本地仓库上传到 GitHub 仓库的完整指南

使用 Git 将本地仓库上传到 GitHub 仓库的完整指南 一、引言 在现代软件开发中,版本控制工具 Git 已成为不可或缺的一部分。GitHub 作为全球最大的代码托管平台,为开发者提供了代码协作、项目管理和开源贡献的便捷方式。本文将详细介绍如何通过 Git 将本…

数据结构 - 栈与队列

栈:限定仅在表尾进行插入或删除操作的线性表。 表尾端有特殊含义,称为栈顶(top)。 相应的,表头端称为栈底(buttom)。不含元素的空表成为空栈。 栈又称为后进先出的线性表(Last In…

jojojojojo

《JOJO的奇妙冒险》是由日本漫画家荒木飞吕彦所著漫画。漫画于1987年至2004年在集英社的少年漫画杂志少年JUMP上连载(1987年12号刊-2004年47号刊),2005年后在集英社青年漫画杂志Ultra Jumphttps://baike.baidu.com/item/Ultra%20Jump/2222322…

统计学核心概念与现实应用精解(偏机器学习)

统计学听起来似乎很复杂,但其实它的核心就是两个概念:概率分布和期望。这两个概念就像是我们日常生活中的决策助手。 概率分布描述了随机事件各种可能结果出现的可能性大小。比如,掷骰子时每个点数出现的概率,这就是一个典型的概…

go-carbon v2.6.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。 carbon 目前已捐赠给 dromara 开源组织,已被 awesome-go 收录&am…

228永磁同步电机无速度算法--基于双重锁相环的滑模观测器

一、原理介绍 在传统的正交锁相环的基础上,利用前述滤波器、ZOH、代数环等非理想因素对电流信号进行延迟重构,进而得到一个与实际电流信号存在相位偏差的重构信号,且该相位偏差等同于初步估计位置信号与实际位置信号之间的相位偏差。将该重构…

零基础入门 线性代数

线性代数是一种代数结构,通俗来讲,向量空间是这个结构的基石,我们要在向量空间中研究向量与向量的关系 一 对象:向量 各位都有对象嘛?如果没有对象,想不想知道你们的天命之人是谁捏?如果有对象…

IO之cout格式控制

目录 简单了解cout是什么? 什么是字节流 默认格式控制 修改计数系统 调整字符宽度 填充字符 设置浮点数显示精度 打印末尾的0和小数点 其他格式控制符 right--->设置为右对齐,永久生效 left--->设置为左对齐,永久生效 fixed--…

探索铸铁试验平台在制造行业的卓越价值

铸铁试验平台在制造行业中具有重要的价值和作用。以下是铸铁试验平台在制造行业中的卓越价值: 提高产品质量:铸铁试验平台可以模拟各种生产条件和环境,并对铸铁产品进行精确的测试和评估。通过实验平台的测试,可以发现产品在不同条…

gpt3大模型蒸馏后效果会变差么

模型蒸馏(Model Distillation)是将复杂的 “教师模型”(如 GPT-3)的知识迁移到更轻量级的 “学生模型” 上的技术。蒸馏后的模型效果是否会变差,取决于多种因素,不能一概而论。以下是详细分析: …

SQL进阶之旅 Day 30:SQL性能调优实战案例

【SQL进阶之旅 Day 30】SQL性能调优实战案例 文章简述: 在数据库系统中,SQL查询的性能直接影响到整个应用的响应速度和用户体验。本文作为“SQL进阶之旅”系列的第30天,聚焦于SQL性能调优实战案例,通过多个真实业务场景中的SQL优…

【61 Pandas+Pyecharts | 基于Apriori算法及帕累托算法的超市销售数据分析可视化】

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 数据信息2.3 数据去重2.4 订单日期处理提取年份2.5 产品名称处理 🏳️‍🌈 3. Pyecharts数据可视化3.1 每年销售额和利润分布3.2…

每日算法刷题Day31 6.14:leetcode二分答案2道题,结束二分答案,开始枚举技巧,用时1h10min

7. 1439.有序矩阵中的第K个最小数组和(困难,学习转化为373) 1439. 有序矩阵中的第 k 个最小数组和 - 力扣(LeetCode) 思想 1.给你一个 m * n 的矩阵 mat,以及一个整数 k ,矩阵中的每一行都以非递减的顺序排列。 你可以从每一行…