3D旋转盒子

css样式:

        .stage{
           width: 400px;
           position: relative;
          perspective: 800px;    //翻译成景深或视距
        }
        @keyframes rotate-frame{
            0% {
                transform: rotateX(0deg);
            }
            25% {
                transform: rotateX(180deg);
            }
            50% {
                transform: rotateX(360deg) rotateY(0deg);
            }
            75% {
                transform: rotateX(360deg) rotateY(180deg);
            }       
            100% {
                transform: rotateX(360deg) rotateY(360deg);
            }    
        }
        .container{
            width: 450px;
            height: 450px;
            transform-style:preserve-3d;
            transform-origin: 50% 50%;
            animation: rotate-frame 10s infinite linear;
        }
        .side{
          width: 150px;
          height: 150px;
          position: absolute;
          box-shadow: inset 0 0 20px rgba(0,0,0,0.9);
          text-align: center;
          line-height: 150px;
        }
        .top{
          left: 150px;
          top: 0;
          transform: rotateX(-90deg);
          -o-transform: rotateX(-90deg);
          transform-origin: bottom;
          -o-transform-origin: bottom;
        }
        .bottom{
          left: 150px;
          top: 300px;
          transform: rotateX(90deg);
          transform-origin: top;
        }
        .left{
          left: 0;
          top: 150px;
          transform: rotateY(90deg);
          transform-origin: right;
        }
        .right{
          left: 300px;
          top: 150px;
          transform: rotateY(-90deg);
          transform-origin: left;
        }
        .front{
          left: 150px;
          top: 150px;
          transform: translateZ(150px);
        }
        .back{
          left: 150px;
          top: 150px;
        }
        .side img{
          width:150px;
          height:150px;
        }    

HTML:

<div class="stage">
  <div class="container">
    <div class="side top"><img src="1.jpg"></div>
    <div class="side bottom"><img src="1.jpg"></div>
    <div class="side left"><img src="1.jpg"></div>
    <div class="side right"><img src="1.jpg"></div>
    <div class="side front"><img src="1.jpg"></div>
    <div class="side back"><img src="1.jpg"></div>
  </div>
</div>

 

转载于:https://www.cnblogs.com/zkthink/p/5332173.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于jQuery和Vue的3D盒子旋转代码的示例: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>3D盒子旋转</title> <style> .container { position: relative; width: 400px; height: 400px; margin: 0 auto; perspective: 1000px; } .box { position: absolute; width: 100%; height: 100%; transform-style: preserve-3d; animation: rotate 10s infinite linear; } .box .side { position: absolute; width: 100%; height: 100%; background-size: cover; background-position: center; backface-visibility: hidden; } .box .front { transform: translateZ(200px); background-image: url('front.jpg'); } .box .back { transform: rotateY(180deg) translateZ(200px); background-image: url('back.jpg'); } .box .left { transform: rotateY(-90deg) translateZ(200px); background-image: url('left.jpg'); } .box .right { transform: rotateY(90deg) translateZ(200px); background-image: url('right.jpg'); } .box .top { transform: rotateX(90deg) translateZ(200px); background-image: url('top.jpg'); } .box .bottom { transform: rotateX(-90deg) translateZ(200px); background-image: url('bottom.jpg'); } @keyframes rotate { from { transform: rotateY(0deg); } to { transform: rotateY(360deg); } } </style> </head> <body> <div id="app"> <div class="container"> <div class="box"> <div class="side front"></div> <div class="side back"></div> <div class="side left"></div> <div class="side right"></div> <div class="side top"></div> <div class="side bottom"></div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> new Vue({ el: '#app', methods: { uploadImg: function(event, index) { var file = event.target.files[0]; var reader = new FileReader(); reader.onload = function(e) { var imgData = e.target.result; $('.box .side').eq(index - 1).css('background-image', 'url(' + imgData + ')'); } reader.readAsDataURL(file); } } }); </script> </body> </html> ``` 该代码实现了一个3D盒子旋转的效果,盒子的六个面可以分别设置不同的图片。其中,`.container`是盒子的容器,`.box`是盒子本身,`.side`是盒子的六个面,`.front`、`.back`、`.left`、`.right`、`.top`、`.bottom`分别代表盒子的前、后、左、右、上、下六个面。通过设置`transform`属性和`animation`属性,实现了盒子旋转效果。 此外,代码中还包含了一个`uploadImg`方法,用于上传图片并设置盒子的面的背景图片。该方法使用了jQuery的选择器和Vue的事件绑定,可以根据需要进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值