几分钟教你实现一个酷炫的扫光效果

7 篇文章 0 订阅

前言

话不多说,咱们先来看看本篇文章中我们实现的效果。
请添加图片描述
是不是发现这个效果非常的熟悉?没错,这经常能够在一些电商网站可以看到,那这究竟是怎么实现的呢?接下来由我来带领大家尝试做一个类似这样的效果出来。

实现

其实上面的样式实现起来都到差不差的,实际上都是利用一个位移动画将一个倾斜的光线从左到右移动给用户造成一种视觉的误差,怎么样?是不是把你也给骗到了😂。如果还不明白的话我将这条线设置为红色并关闭动画你就明白了。
在这里插入图片描述
这条线也可以根据不同的需求来进行调整,只需要将linear-gradient(45deg,xxxx)中的偏转角度修改一下即可,比如我修改为 125deg效果如下:
在这里插入图片描述

这里我将扫光的这条线设置为transform: translateX(20%),位移动画就是实际上就是将这条线从最左边移动到最右边去。那有的小伙伴可能就会问,那文字扫光呢?文版扫光其实也差不多的原理。接下来我们分别进行实现吧!

文本扫光

文本扫光的核心思想是利用background-clip: text属性和渐变色背景来创建动态的文本效果。通过设置文本颜色为透明,并使用currentColor来保持渐变色的一致性,初次之外我们还要将文本的颜色设置为透明,以便隐藏实际的文本颜色,让渐变背景色显示出来,即webkit-text-fill-color: transparent。具体实现如下:

<template>
     <h1 class="scan-txt">画一个圆</h1>
</template>

<style>
.scan-txt {
    font-weight: bold;
    color: #4781ff;
    -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;
    background-clip: text;
    animation: scan-txt 2s infinite;
}
@keyframes scan-txt {
    to {
        background-position: 200%;
    }
}
</style>

或者使用,两者实现起来都差不多的。

<template>
    <span class="scan-txt2">几分钟教你实现一个酷炫的扫光效果</span>
</template>

<style>
.scan-txt2 {
    background: #161515 linear-gradient(to left, transparent, #fff, transparent) no-repeat 0 0;
    background-size: 20% 100%;
    background-position: 0 0;
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    animation: scan-text2 2s infinite;
}

@keyframes scan-text2 {
    from {
        background-position: 0% 0%;
    }

    to {
        background-position: 100% 100%;
    }
}
</style>

实现效果:
请添加图片描述

图片扫光

图片扫光因为不能直接在背景进行扫光,那么我们可以另辟蹊径使用一个左右位移的伪元素来覆盖在图片容器上面也可以达到这个效果。

<template>
   <div class="scan-wrap card">
     <img src="./02.jpg" />
   </div>
</template>

<style>
.card {
    border-radius: 10px;
}
.scan-wrap {
    position: relative;
    overflow: hidden;
}

.scan-wrap::after {
    content: "";
    position: absolute;
    inset: -20%;
    background: linear-gradient(125deg,
            rgba(255, 255, 255, 0) 40%,
            rgba(255, 255, 255, 0.7),
            rgba(255, 255, 255, 0) 60%);
    animation: scan-wrap 2s infinite;
    transform: translateX(-20%);
}
@keyframes scan-wrap {
    to {
        transform: translateX(100%);
    }
}
</style>

效果如下:
请添加图片描述

不规则图片

不规则图片就比上面图片的方式多了一点处理方式—mask,如果不清楚这个属性的同学可以前往我的这篇文章学习一下都2024年了你还没有开始探索 CSS 属性 mask 吗?

<tempalte>
   <div class="scan-wrap mask-gift">
     <img
       class="logo"
       src="https://raw.githubusercontent.com/XboxYan/tuchuang/main/img/3af9e8de.00uqxe.png"
     />
   </div>
</template>
<style>
.scan-wrap {
    position: relative;
    overflow: hidden;
}

.scan-wrap::after {
    content: "";
    position: absolute;
    inset: -20%;
    background: linear-gradient(125deg,
            rgba(255, 255, 255, 0) 40%,
            rgba(255, 255, 255, 0.7),
            rgba(255, 255, 255, 0) 60%);
    animation: scan-wrap 2s infinite;
    transform: translateX(-20%);
}
@keyframes scan-wrap {
    to {
        transform: translateX(100%);
    }
}
.mask-gift {
    mask: url(xxxx) 0 0/100%;
}
</style>

效果如下:
请添加图片描述

总结

以上就本文的全部内容了,接下来对本文的内容进行总结:

  • 扫光样式可以通过线性渐变来创建,这种方法简单且效果良好。
  • 扫光动画的实现通常需要改变元素的位置或背景位置,这可以通过 CSS 的 transformbackground-position 属性来实现。
  • 对于文本元素,可以通过改变 background-position 来实现扫光动画。但是,需要注意的是,如果背景尺寸等于容器尺寸,那么设置 background-position 的百分比将无效。
  • 对于普通的容器元素,如果直接使用背景来实现扫光效果,可能会被容器内的其他元素覆盖。这时,可以使用伪元素来创建扫光效果。
  • 对于不规则的图片,直接使用扫光效果可能会产生多余的部分。这时,可以使用 CSS 的 mask 属性来根据图片的形状裁剪掉多余的部分。
  • 在实现扫光动画时,还需要注意动画的性能问题。尽量使用硬件加速的 CSS 属性(如 transformopacity),避免触发页面的重排或重绘,以提高动画的性能。
### 回答1: Unity是一个流行的游戏开发引擎,它允许开发者创建各种不同类型的游戏和应用程序。在Unity中制作扫光效果是相对简单的。 首先,我们需要创建一个扫光效果所需的材质。可以使用Shader来定义材质的外观和行为。在Unity中,有很多内置的Shader,也可以通过编写自定义的Shader来实现我们想要的效果。对于扫光效果,可以使用一个渐变的颜色来模拟光线的效果。 接下来,我们需要在场景中创建一个灯光对象。可以使用Unity的灯光组件来实现这一点。选择一个适当的灯光类型,如点光源或聚光灯,根据场景的需求进行设置。可以使用灯光的颜色和强度参数来调整扫光效果。 然后,将创建的材质应用到需要扫光效果的对象上。可以使用Renderer组件将材质赋予对象。确保将材质的渲染模式设置为透明,以便光线可以穿过对象。 最后,可以使用脚本来控制扫光效果的运动和动画。可以使用Unity的内置动画系统或编写自定义的脚本来实现这一点。使用脚本可以控制光线的方向、速度和强度,并为用户提供交互性。 总结而言,Unity制作扫光效果可以通过创建适当的材质、灯光和脚本来实现。通过调整参数和添加动画,可以使扫光效果更加生动和逼真。希望这些步骤能够帮助您在Unity中实现您的扫光效果。 ### 回答2: Unity是一款非常强大的游戏引擎,它支持制作各种各样的特效,其中包括扫光效果。 要在Unity中制作扫光效果,首先需要创建一个适合的光源。在Unity中,可以使用Directional Light(方向光)或Spot Light(聚光灯)来模拟光线的传播。Directional Light适用于像太阳这样的光源,而Spot Light适用于有特定方向和范围的光源,比如手电筒。 接下来,可以通过调整光源的参数来使其具有扫光效果。在Unity的Inspector面板中,可以设置光源的角度(Spot Angle)和范围(Range),从而控制光源照射的方向和范围。 此外,可以通过添加粒子系统来增强扫光效果。可以在Unity的Hierarchy面板中右键点击并选择"Effects" -> "Particle System",然后在场景中添加一个粒子系统。在粒子系统的属性面板中,可以调整粒子的形状、大小、颜色等参数,以获得更加逼真的扫光效果。 在制作扫光效果时,还可以使用其他的特效工具,如Post-processing Stack或Shader Graph。通过这些工具,可以给扫光添加更多的视觉效果,如模糊、颜色渐变等,以使扫光效果更加生动和吸引人。 总之,要在Unity中制作扫光效果,需要通过设置和调整光源的参数,添加粒子系统,并结合其他特效工具,以获得所需的效果。通过不断的调试和优化,可以制作出非常出色的扫光效果,使游戏或场景更加生动和引人注目。 ### 回答3: Unity 是一款功能强大的游戏开发引擎,可以用来制作各种各样的特效,包括扫光效果。 要制作扫光效果,首先需要创建一个空对象,作为扫光的物体。然后,在该物体上添加一个具有材质的平面,这个材质将会用来渲染扫光效果。 接下来,我们需要为创建的材质添加一个自定义的着色器。这个着色器将包含扫光的逻辑和效果。可以使用Unity自带的着色器语言(ShaderLab)来编写自定义的着色器代码。在着色器的代码中,我们可以定义扫光的颜色、强度、宽度等属性,以及控制扫光的动画效果。 当着色器代码编写完成后,将其添加到材质上。然后,将这个材质应用到创建的平面上,这样扫光效果就会在游戏场景中显示出来。 为了让扫光在游戏中有更加真实的效果,可以使用一些其他的技巧。比如,可以给扫光物体添加粒子系统,使得扫光有一种粒子的效果。还可以通过动画控制扫光的运动方向和速度,使得扫光动态地在游戏场景中移动。 最后,在光源和接收扫光的物体之间需要适当设置碰撞关系,保证扫光的遮挡效果正确渲染。 总而言之,Unity可以通过使用自定义的着色器、材质和粒子系统来制作出令人惊艳的扫光效果。同时,利用动画和碰撞关系的设置可以增强扫光的真实感和交互性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

画一个圆_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值