Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说纯CSS实现的拳皇对战动画效果[通俗易懂],希望能够帮助你!!!。
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
每天挤一篇的日更让我日渐憔悴,今天闲着没事,翻出了拳皇98,打了一会儿以后,突然来了灵感,拿css做一个拳皇人物动作展示效果不就就可以再 水 写一篇吗。说干就干
flex
布局 经典flex,不多赘述-webkit-box-reflect
倒影,加点花活儿~linear-gradient
来个斑马条纹调剂调剂transition
过渡来一下我们的页面结构由作为容器的container
,下面包着两个box
,box
内放置我们的拳皇人物 三层结构组成
<div class="container">
<div class="box">
<img src="https://pic.qy566.com/pixijs/images/bs.gif" alt="">
</div>
<div class="box">
<img src="https://pic.qy566.com/pixijs/images/nn.gif" alt="">
</div>
</div>
首先是container
的样式,作为布局容器。container
要做的就是自身水平垂直居中,组内元素居中
html,body{
width: 100%;
height: 100%;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
background-color: #1e2759;
}
.container{
display: flex;
position: relative;
}
接下来就要实现斑马条纹了,斑马条纹通过linear-gradient
+background-size
来实现,linear-gradient
是线性渐变,第一个参数指定渐变开始角度,之后的参数指定各个位置的颜色与所占百分比, background-size
决定了条纹的宽度,这里我们用到了色相反相滤镜,来使两个盒子的条纹呈现不同的颜色
.box{
position: relative;
width: 211px;
height: 360px;
background: #444;
margin: 0 20px;
border-radius: 16px;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(45deg, #3c5fbd 25%, #444 25%,
#444 50%,#3c5fbd 50%,#3c5fbd 75%,
#444 75%,
#444 100%
);
background-size: 40px 40px;
cursor: pointer;
}
.box:nth-child(2) {
filter: hue-rotate(90deg);
}
利用box
的before伪元素,我们添加一个酷炫光圈背景
.box::before{
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('https://pic.qy566.com/pixijs/images/quan.webp');
background-size: contain;
background-position: center;
background-repeat: no-repeat;
}
接下来就是让图片在hover的时候,改变大小,响应鼠标的移动
.box img{
position: absolute;
bottom: 0;
height: 90%;
transition: height .5s;
}
.box:nth-child(2) img{
transform: rotateY(180deg);
}
.box:hover img{
height: 400px;
}
最后的最后,借助-webkit-box-reflect
绘制一个倒影
-webkit-box-reflect: below 1px linear-gradient(transparent, transparent, #0004, #000000)
filter hue-rotate
接收一个角度值,作用是将当前的颜色进行反相,处理出不同的颜色效果来,我们的呼吸灯就是利用的这个滤镜,如果你们注意看我的代码的话,我的gif背景光圈用的是同一张,但是经过了反相滤镜,一样可以变成对应的颜色,非常神奇linear-gradient
线性渐变background-image: linear-gradient(direction, color-stop1, color-stop2, ...);
direction
代表方向,然后是渐变的颜色,比如下面这句
/* 从下到上,从蓝色开始渐变、到高度40%位置是绿色渐变开始、最后以红色结束 */
linear-gradient(0deg, blue, green 40%, red);
-webkit-box-reflect
倒影,倒影第一个参数是方向, below above
等等,第二个参数是 间距 距离当前元素的间距 第三个参数是mask-image 遮罩图形,对倒影再次进行处理叠加的图像css吸引人的地方就在于,只要你想象力足够丰富,那你可以做出任何特效,正所谓一千个人有一千个哈姆雷特,一千个人写css也会有很多不同的实现,也许,这就是css的魅力所在吧!
老规矩咯,码上掘金太小,看不出倒影效果,建议点击详情去大屏查看!