案例:实现翻牌效果

项目效果如下:

 

具体步骤:

通过点击卡片,卡片会有水平翻转的效果,并且翻转过后显示对应的图片,当再次点击图片时,卡片则会翻转回来。

实现效果关键代码如下:

     
/*设置初始卡片的背景颜色*/
      .f>div:nth-child(odd){
          background-color: aqua;
      }
      .f>div:nth-child(even){
          background-color: red;
      }
      /*设置动画效果*/
    @keyframes xz {
        /*实现开始翻转,此时没有图片*/
        0%{
            transform: rotateY(0deg);
            background-image: url("");
        }100%{
            transform: rotateY(180deg);
        }
    }
    @keyframes xzr {
        /*翻转回去,从有图片到没有图片*/
        0%{
            transform: rotateY(180deg);
        }100%{
             transform: rotateY(0deg);
                     background-image: url("");
         }
    }
    /*设置动画的属性*/
    .xz{
        animation: xz 1s linear 1 forwards;
    }
    .xzr{
        animation: xzr 1s linear 1 forwards;

    }


<div id="app">
      <div class="f">
<!--       $event表示当前出发的事件   -->
          <div v-for="i in 6" @click="show($event,i)"></div>
      </div>
</div>

<script>
        new Vue({
            el:"#app",
            data: {
                list:[0,0,0,0,0,0],
            },
            methods:{
                show(e,i){
                    if(this.list[i-1]%2){
                        // e.target表示当前的元素对象
                        e.target.style.backgroundImage='url()'
                        e.target.className='xzr'
                        console.log(e)
                    }else{
                        e.target.style.backgroundImage='url(/randomImgC?'+i+')'
                        e.target.className='xz'
                    }
                    this.list[i-1]++
                }
            }
        })
</script>

后端主要代码如下:

String[] fileNames = new File("D:\\桌面\\aa\\beauty").list();
        String imgName = fileNames[(int) Math.floor(Math.random() * fileNames.length)];
        System.out.println("随机生成的文件名是"+imgName);
        ImgUtil.responseImg("D:\\桌面\\aa\\beauty/"+imgName,resp);

 

主要实现思路:

首先使用循环自动生成六个div,并且给他们初始设置背景颜色。通过点击他们,给他们添加类名实现旋转与更改背景图片,list用来记录每个div被点击的次数,控制给他们添加什么样的样式,传入的i用于给他们标记序号,由于后端传输的图片采用随机的方式,所以也保证图片不会改变同时也保证每个div中显示的图片不一样(通过给请求加一个参数的方式)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CSS实现翻牌效果动画可以使用CSS 3D转换和CSS动画来实现。以下是实现的步骤: 1. 创建一个容器,用于包含翻转的两个面。 2. 给容器添加一个透视效果,使其能够呈现出三维效果。 ``` .container { perspective: 1000px; } ``` 3. 创建两个面,分别用于显示正面和背面的内容,并将它们放置在容器中。 ``` <div class="container"> <div class="card"> <div class="front">正面</div> <div class="back">背面</div> </div> </div> ``` 4. 使用CSS 3D转换将背面旋转180度,并设置初始状态为不可见。 ``` .card { transform-style: preserve-3d; transition: all 0.5s ease; } .back { transform: rotateY(180deg); display: none; } ``` 5. 使用CSS动画在容器的鼠标悬停事件时触发翻转效果,并切换正反面的可见状态。 ``` .container:hover .card { transform: rotateY(180deg); } .container:hover .card .front { display: none; } .container:hover .card .back { display: block; } ``` 完整的代码如下: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>翻牌效果动画</title> <style> .container { perspective: 1000px; width: 200px; height: 200px; } .card { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transition: all 0.5s ease; } .front, .back { position: absolute; top: 0; left: 0; width: 100%; height: 100%; backface-visibility: hidden; } .front { background-color: #e74c3c; color: #fff; } .back { background-color: #2ecc71; color: #fff; transform: rotateY(180deg); display: none; } .container:hover .card { transform: rotateY(180deg); } .container:hover .card .front { display: none; } .container:hover .card .back { display: block; } </style> </head> <body> <div class="container"> <div class="card"> <div class="front">正面</div> <div class="back">背面</div> </div> </div> </body> </html> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值