CSS3 transform实现图片旋转木马3D浏览效果

本文介绍如何使用CSS3实现3D翻转效果的图片轮播,通过为不同图片设置rotateY角度和translateZ距离,使它们在三维空间中均匀分布。点击事件则会改变容器的rotateY值,实现图片的轮播效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先DOM结构: 舞台>容器>图片

为舞台设置样式:perspective: 800px;

为容器设置样式:transform-style: preserve-3d;position: relative;transition: transform .8s; 元素本身style属性设置为transform: rotateY(0deg);为后面容器旋转获得初始值

为图片设置样式:position: absolute;

为每个图片设置样式(此时又九张图片):img:nth-child(1) { transform: rotateY(   0deg ) translateZ(195.839px); }
                                                                           img:nth-child(2) { transform: rotateY(  40deg ) translateZ(195.839px); }
                                                                           img:nth-child(3) { transform: rotateY(  80deg ) translateZ(195.839px); }
                                                                           img:nth-child(4) { transform: rotateY( 120deg ) translateZ(195.839px); }
                                                                           img:nth-child(5) { transform: rotateY( 160deg ) translateZ(195.839px); }
                                                                           img:nth-child(6) { transform: rotateY( 200deg ) translateZ(195.839px); }
                                                                           img:nth-child(7) { transform: rotateY( 240deg ) translateZ(195.839px); }
                                                                           img:nth-child(8) { transform: rotateY( 280deg ) translateZ(195.839px); }
                                                                           img:nth-child(9) { transform: rotateY( 320deg ) translateZ(195.839px); }

            rotateY的值为360/图片的个数,translateZ的值为(图片宽度/2)/ tan(rorateY/2)

最后,在js代码中改变容器的rotateY的值:代码如下:

                     var stage = document.getElementById("stage");
         stage.addEventListener('click',function() {
      var rotateY = this.style.webkitTransform;

    // 由左向右:rotateY-40
    var newPos = parseInt(rotateY)-40; 
    this.style.webkitTransform = 'rotateY(' + newPos + 'deg)';
         });

PS:css,js代码没有进行浏览器兼容处理,请自行添加


效果图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值