css 利用动画实现旋转卡片

6 篇文章 0 订阅

效果图:

代码:

 需要注意perspective属性https://www.w3school.com.cn/cssref/pr_perspective.asp

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>css动画旋转卡片效果</title>
</head>
<body>
    <div class="re-box">
        <div class="re-item">
          <div class="re-item-front">
            <img src="https://img1.baidu.com/it/u=1887300482,1122059733&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt="123" />
            <div class="text">正面</div>
          </div>
          <div class="re-item-back">
            <img src="https://img1.baidu.com/it/u=1274368820,2961871675&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=863" alt="456" />
            <div class="text">反面</div>
          </div>
        </div>
      </div>
</body>
</html>
<style lang="scss" scoped>
  
    .text{
        margin: 5px;
        width: 40px;
        letter-spacing: 2px;
    }
    .re-box {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
  
    .re-item {
      /* perspective 属性定义 3D 元素距视图的距离,以像素计。 */
      perspective: 500;
    }
  
    .re-item img {
        width: 220px;
        height: 340px;
    }
  
    .re-item-front {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: #fff;
      perspective: 1000;
      backface-visibility: hidden;
      transition: all 1.5s;
      box-shadow: rgba(50, 50, 50, 0.2) 0 0 15px;
      overflow: hidden;
      animation: mymove 6s linear infinite;
    }
  
    .re-item-back {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: #fff;
      perspective: 1000;
      backface-visibility: hidden;
      /* 该属性定义当元素不面向屏幕时是否可见 */
      transition: all 1.5s;
      box-shadow: rgba(50, 50, 50, 0.2) 0 0 15px;
      overflow: hidden;
      animation: mymove1 6s linear infinite;
  
    }
    .re-item-back {
      position: relative;
      transform: rotateY(-180deg);
    }
  
    @keyframes mymove {
      from {
        transform: rotateY(0deg);
      }
  
      to {
        transform: rotateY(-360deg);
      }
    }
  
    @keyframes mymove1 {
      from {
        transform: rotateY(-180deg);
      }
  
      to {
        transform: rotateY(-540deg);
      }
    }
  </style>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
展开卡片动画效果可以使用 CSS3 的 3D 变换实现。具体实现方法如下: 1.先创建一个包含卡片的容器元素,并设置该元素为 perspective(透视)。 ``` .container { perspective: 800px; } ``` 2.创建卡片元素,并设置其为绝对定位,然后设置其 transform-style 为 preserve-3d。 ``` .card { position: absolute; transform-style: preserve-3d; } ``` 3.设置卡片元素的 transform-origin 为顶部中心。 ``` .card { transform-origin: top center; } ``` 4.设置卡片元素的 transform 为旋转角度为 0 度的样式,同时设置过渡属性为 transform 和 opacity。 ``` .card { transform: rotateX(0deg); opacity: 1; transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out; } ``` 5.创建一个触发器元素,并设置其为相对定位,然后设置其上下左右的位置和大小,以及背景颜色等样式。 ``` .trigger { position: relative; top: 50%; left: 50%; width: 100px; height: 100px; margin-top: -50px; margin-left: -50px; background-color: #eaeaea; } ``` 6.使用 JavaScript 监听触发器元素的点击事件,并在事件处理函数中将卡片元素的 transform 属性设置为旋转角度为 -180 度的样式,同时将其 opacity 属性设置为 0。 ``` document.querySelector('.trigger').addEventListener('click', function() { document.querySelector('.card').style.transform = 'rotateX(-180deg)'; document.querySelector('.card').style.opacity = '0'; }); ``` 7.将卡片元素添加到容器元素中,并设置其初始样式为旋转角度为 0 度的样式。 ``` <div class="container"> <div class="card" style="transform: rotateX(0deg); opacity: 1;"></div> </div> ``` 这样,在触发器元素被点击时,卡片元素就会以 3D 变换的方式展开,并且有一个淡出的动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值