CSS3学习笔记--transform基于原始数据(旋转木马实例)

参考链接:好吧,CSS3 3D transform变换,不过如此!

  1. transform-style:preserve-3d属性要在图片所在的容器(父元素)中定义,perspective定义在父子元素上的效果不同。
  2. 对象的Z轴与其平面垂直,因此照片需要先旋转,再位移;否则所有照片都会挤到一起。
  3. 点击图片后,都要基于图片的原始顺序和位置进行transform计算。下面是旋转木马的javascript代码、HTML代码和CSS代码。
<script type="text/javascript">
    var count = 1;
    function rotateRound(){ //不管第几次点击,myCircle取出来的Img列表都是HTML中的原始顺序
        var myCircle = document.getElementById("circle").getElementsByTagName("img");
        var i;
        var myImg;
        for(i=0;i<myCircle.length;i++){
              myImg = myCircle[i];    
              myImg.style.transform = "rotateY("+(i-count)*40+"deg) translateZ(300px)";  //每次transform都是基于原始位置,而不是当前视图显示的位置。
        }        
        count++;
    };
</script>

 

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>旋转木马</title>
<link rel="stylesheet" href="MerryGoRound.css" />
<script type="text/javascript">
    var count = 1;
    function rotateRound(){
        var myCircle = document.getElementById("circle").getElementsByTagName("img");
        var i;
        var myImg;
        for(i=0;i<myCircle.length;i++){
              myImg = myCircle[i];    
              myImg.style.transform = "rotateY("+(i-count)*40+"deg) translateZ(300px)";
        }        
        count++;
    };
</script>
</head>

<body>
    <section id="stage"><center>
    <div id="circle" onclick="rotateRound()">
        <img class="girls one" src="01.jpg" alt="Taboo" />
        <img class="girls two" src="02.jpg" alt="Taboo" />
        <img class="girls three" src="03.jpg" alt="Taboo" />
        <img class="girls four" src="04.jpg" alt="Taboo" />
        <img class="girls five" src="05.jpg" alt="Taboo" />
        <img class="girls six" src="06.jpg" alt="Taboo" />
        <img class="girls seven" src="07.jpg" alt="Taboo" />
        <img class="girls eight" src="08.jpg" alt="Taboo" />
        <img class="girls nine" src="09.jpg" alt="Taboo" />
    </div>        
    </center></section>
</body>

 

/******************************CSS代码**********************************************/
#stage
{ width:auto; margin:50px 50px; } #circle { perspective:1200px; -moz-transform-style:preserve-3d; } .girls { width:200px; height:300px; position:absolute; -moz-transition:all 0.3s linear; } .one { -moz-transform:rotateY(0deg) translateZ(300px); 照片绕城柱形,像旋转木马一样 } .two { -moz-transform:rotateY(40deg) translateZ(300px); } .three { -moz-transform:rotateY(80deg) translateZ(300px); } .four { -moz-transform:rotateY(120deg) translateZ(300px); } .five { -moz-transform:rotateY(160deg) translateZ(300px); } .six { -moz-transform:rotateY(200deg) translateZ(300px); } .seven { -moz-transform:rotateY(240deg) translateZ(300px); } .eight { -moz-transform:rotateY(280deg) translateZ(300px); } .nine { -moz-transform:rotateY(320deg) translateZ(300px); }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值