CSS实现图片层闪光效果

这篇博客介绍了如何使用CSS实现鼠标悬停图片时产生流星般闪光效果的技巧。通过结合线性渐变和skew变形函数,创建了一道从左至右扫过的白色光束,为图片增添了动态视觉效果。理解此效果需要了解线性渐变的用法和skew函数的倾斜原理。代码示例详细解释了实现过程,并提供了不同skew函数参数对形状的影响。
摘要由CSDN通过智能技术生成

闪光效果

当鼠标光标移动到图片上的时候,有一道流星般的闪光划过

点击查看效果

图片抓拍截图:

我们可以看到,有一道白光正在扫过这张图片

代码实现

css代码

#wrapper{
  position: relative;
  width: 240px;
  cursor: pointer;
}
#flash{
  position: absolute;
  width: 100px;
  height: 100%;
  left: -145px;
  top: 0;
  background:-webkit-linear-gradient(left,rgba(255,255,255,0)0%,rgba(255,255,255,0.5)50%,rgba(255,255,255,0)100%);
  transform: skewX(-30deg);
}
#wrapper:hover #flash{
  left: 300px;
  transition: all 0.5s ease-in-out;
}

html代码

<div id="wrapper" title="css魔法">
  <div id="flash"></div>
  <img src="img/magic.jpeg" width="100%">
</div>

理解基础

要想理解上面的代码,需要具备线性渐变的知识和skew函数的变换

线性渐变

线性渐变属性是一个颜色渐变属性,它的语法格式如下

-webkit-linear-gradient:(方向,颜色1+进度,颜色2+进度)

比如说:

background:-webkit-linear-gradient(left,rgba(255,255,255,0)0%,rgba(255,255,255,0.5)50%,rgba(255,255,255,0)100%);

它的含义就是从左到右渐变,进度分别是0%,50%,100%

我们举个小案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>线性渐变</title>
    <style>
        .wrapper{
            width: 200px;
            height: 200px;
            background: -webkit-linear-gradient(left,#00FFFF 0%,#0000FF 50%,#00FFFF 100%);
        }
    </style>
</head>
<body>
<div class="wrapper"></div>
</body>
</html>

实现效果:

我们可以看到这样一个带有魔法效果的盒子,如果你喜欢我的这个专栏css魔法,可以打开查看更多的css特效

skew()变形函数

skew是一个形变函数,是css3新增的特性之一。我们使用它可以实现高级的形变效果。

skew是什么呢?它可以把盒子进行倾斜,举个例子:我们把上面的漂亮蓝色渐变盒子,进行skewX拉伸

代码示例:

css

.wrapper{
    width: 200px;
    height: 200px;
    margin-left: 100px;
    background: -webkit-linear-gradient(left,#00FFFF 0%,#0000FF 50%,#00FFFF 100%);
    /*变形函数*/
    transform: skewX(-30deg);
}

html

<div class="wrapper"></div>

实现效果:skewX(30deg)

skewX函数是将盒子沿着x轴方向进行倾斜,skewX(-30deg)的意思是顺时针方向沿着x轴倾斜30度。那么skewX(30deg)的意思就是逆时针方向沿着x轴倾斜30度

我们在举一个y方向skew的例子

css

 .wrapper{
    width: 200px;
    height: 200px;
    margin-left: 100px;
    background: -webkit-linear-gradient(left,#00FFFF 0%,#0000FF 50%,#00FFFF 100%);
    transform: skewY(-30deg);
}

js

<div class="wrapper"></div>

实现效果:skewY(30deg)

skewY函数是将盒子沿着y轴方向进行倾斜,skewY(30deg)的意思是顺时针方向沿着y轴倾斜30度。那么skewY(-30deg)的意思就是逆时针方向沿着y轴倾斜30度

我们不难发现skewX和skewY的方向是反的

函数类型特点
skewX()正角度是是逆时针倾斜,负角度是顺时针倾斜
skewY()正角度是顺时针倾斜,负角度是逆时针倾斜

两者恰恰相反

最终代码解读

有了上面的基础,我们就可以进行讲解了

注意看下面这些代码

#flash{
  position: absolute;
  width: 100px;
  height: 100%;
  left: -145px;
  top: 0;
  background:-webkit-linear-gradient(left,rgba(255,255,255,0)0%,rgba(255,255,255,0.5)50%,rgba(255,255,255,0)100%);
  transform: skewX(-30deg);
}

重点看left:-145px

这个时候图片和平行四边形的位置是

这里我把线性渐变的颜色调成了蓝色,方便看的更加清楚

再来看下面的代码

 #wrapper:hover #flash{
      left: 300px;
      transition: all 0.5s ease-in-out;
 }

left由原来的-145px变成了300px,过渡时间是0.5s,这个平行四边形扫过图片,形成闪光效果

这个特效讲解完毕了,学会了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值