css 实现图片3D旋转效果(那些年写过的转圈圈)

css实现图片旋转效果还是很容易的,不说废话直接上,先看下效果

实现起来也不复杂,主要用到的css样式有:
transform-style, transform, animation, -webkit-box-reflect,会在代码里一一介绍,如下

.container {
  width: 800px;
  height: 600px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  margin: 0 auto;
  .item-box {
    width: 200px;
    height: 200px;
    // transform-style 指定子元素在 3D 空间中的呈现方式
    transform-style: preserve-3d; // 保持3d变换
    // transform, 用于对元素进行 2D 或 3D 变换
    transform: rotateX(-15deg) rotateY(0deg); // 初始值添加一些旋转,呈现立体感
    animation: rotation 18s linear infinite; // 实现动画效果
  }
  // 360度循环旋转
  @keyframes rotation {
    to {
      transform: rotateX(-15deg) rotateY(360deg);
    }
  }
  // 此处为预编译样式写法(less,sass,scss),css需单独一个个的去写
  $n: 6;
  $pDeg: 360deg / $n;
  .item {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    overflow: hidden;
    border-radius: 15px;
    box-shadow: 0 0 10px rgb(240, 240, 240);
    border: 3px solid #fff;
    // 产生倒影,效果更佳
    -webkit-box-reflect: below 10px linear-gradient(transparent, transparent , #000);
    // 遍历填充样式
    @for $i from 1 through $n {
      &:nth-child(#{$i}) {
        transform: rotateY($pDeg * $i) translateZ(250px);
        .img {
          background-image: url('../assets/neza'+#{$i}+'.png'); // 此处为图片路径
          background-repeat: no-repeat;
          background-size: contain;
        }
      }
    }
  }
  .img {
    width: 100%;
    height: 100%;
  }
};
<div className="container">
    <div className="item-box">
      <div className="item item1">
        <div className="back"></div>
        <div className="img" />
      </div>
      <div className="item item2">
        <div className="back"></div>
        <div className="img" />
      </div>
      <div className="item item3">
        <div className="back"></div>
        <div className="img" />
      </div>
      <div className="item item4">
        <div className="back"></div>
        <div className="img" />
      </div>
      <div className="item item5">
        <div className="back"></div>
        <div className="img" />
      </div>
      <div className="item item6">
        <div className="back"></div>
        <div className="img" />
      </div>
    </div>
  </div>

最后留一道优化题,如何实现图片在旋转到后边时,可以显示图片的背面,而不是仍然显示图片,知道的可以评论留言哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值