纯CSS实现的拳皇对战动画效果[通俗易懂]

后端 (89) 2023-03-27 22:35

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说纯CSS实现的拳皇对战动画效果[通俗易懂],希望能够帮助你!!!。
纯CSS实现的拳皇对战动画效果[通俗易懂]_https://bianchenghao6.com/blog_后端_第1张

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情

前言

每天挤一篇的日更让我日渐憔悴,今天闲着没事,翻出了拳皇98,打了一会儿以后,突然来了灵感,拿css做一个拳皇人物动作展示效果不就就可以再 写一篇吗。说干就干

需要用到的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的魅力所在吧!

码上掘金

老规矩咯,码上掘金太小,看不出倒影效果,建议点击详情去大屏查看!

发表回复