2015-06-21 317 views
0

我想创建一个看起来像一个盒子的div,然后它会自动旋转以显示其中的不同文本。CSS 3D框旋转

有问题的效果如图所示的“料理鼠王”,“精神不振”,“窃窃私语”,重写本” &‘集结号’的页面上的按钮: http://tympanus.net/Development/CreativeLinkEffects/

我没有使用的代码从以前的项目由其他人撰写(作者不详)。

我有一个立方体的div,在它4个板,以及第一2个板标记初始面板和下一个面板

<div class="cube flip-to-bottom"> 
    <div class="initialpanel"><span>1st Panel</span></div> 
    <div class="nextpanel"><span>2nd Panel</span></div> 
    <div><span>3rd Panel</span></div> 
    <div><span>4th Panel</span></div> 
</div> 

两者风格

.initialpanel { 
    -webkit-transform: translateZ(25px); 
    -moz-transform: translateZ(25px); 
    -o-transform: translateZ(25px); 
    -ms-transform: translateZ(25px); 
    transform: translateZ(25px); 
} 

.nextpanel { 
    -webkit-transform: rotateX(-90deg) translateZ(-25px); 
    -moz-transform: rotateX(-90deg) translateZ(-25px); 
    -o-transform: rotateX(-90deg) translateZ(-25px); 
    -ms-transform: rotateX(-90deg) translateZ(-25px); 
    transform: rotateX(-90deg) translateZ(-25px); 
} 

和最后一类使翻转上立方格div

.flipNow { 
    -webkit-transform: rotateX(89deg); 
    -moz-transform: rotateX(89deg); 
    -o-transform: rotateX(89deg); 
    -ms-transform: rotateX(89deg); 
    transform: rotateX(89deg); 
} 

把这两个连在一起就是我的JavaScript,它会通过幼崽e的children div,通过每次迭代重命名使用CSS进行动画制作。

function startRotating(currentIndex) { 
    current = $(".cube >div.initialpanel"); 
    nextCurrent = current.next(); 
    next = $(".cube >div.nextpanel"); 
    nextNext = next.next(); 

    var flipNow = setTimeout(function(){ 
     $(".cube").addClass("flipNow"); 
    }, 2000); 

    var stopFlip = setTimeout(function(){ 
     $(".cube").removeClass("flipNow"); 
     current.removeClass("initialpanel"); 
     next.addClass("initialpanel"); 
     next.removeClass("nextpanel"); 
     nextNext.addClass("nextpanel"); 
    }, 3000); 

    setTimeout(function(){ 
     if(nextNext.length ===1){ 
      startRotating($("div.initialpanel")); 
     } 
    },4000); 
} 

这个代码理应旋转面板1和显示面板2,和转动面板2和显示面板3,和旋转面板3和显示面板4和因为没有更多的面板面板4后停止。

旋转和启示如预期的那样occour,但由于删除flipNow类和重命名的儿童div类,翻转回到初始位置,然后旋转到新的位置。这是一个链接,我的问题的工作副本正在主持:http://jsfiddle.net/fatgamer85/m71osbLt/4/

任何帮助将不胜感激,这将帮助我停止在每个面板显示双重旋转。

感谢

回答

1

我修改你的小提琴(相当严重)给你N个边的图形一般情况下(在我的例子是5):fiddle。如果您需要进一步解释,请询问.

+0

Hi Radu,感谢您的解决方案。我开始做一个Nsided动画,但沿着路线迷路了。从代码中我可以看到,每个div初始时已经处于-90度,并且当添加正常时,它会移动到0deg,这是要翻转的动画;当顶部添加时,它进一步旋转90度? 我不知道它是如何工作的,但确实如此。感谢您的回答,简单而精彩! – rand0m

+0

@ rand0m是的,你理解得很好 - 有3个阶段:-90,0,90(除了最初的层,只有两个0,90)。 这种安排背后的想法是,我不知道你是否想将它用于一个立方体,或者类似于多层图层的东西,你想模仿一个立方体旋转。我希望它对你有所帮助。 –