闪光效果
当鼠标光标移动到图片上的时候,有一道流星般的闪光划过
图片抓拍截图:
我们可以看到,有一道白光正在扫过这张图片
代码实现
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,这个平行四边形扫过图片,形成闪光效果
这个特效讲解完毕了,学会了吗?