可控制的CSS3D盒子动画

今天来看一个CSS 3D盒子动画,利用jqueryUI和jquery实现盒子动画的控制,在线看请戳这里,下载把玩请戳这里


我们需要两个slider,一个input来控制盒子运动。

<div class="wrapper">
    <h4>Animate X axis</h4>
    <div id="sliderX"></div>
    <br>
    <h4>Animate Y axis</h4>
    <div id="sliderY"></div>
    <br>
    <input type="checkbox" /> Auto animate
</div>
接着我们来做盒子,我们需要两个面

<div id="viewport">
   <div id="cube">
      <div id="front"></div>
      <div id="back"></div>
      <div id="top"></div>
      <div id="bottom"></div>
      <div id="left"></div>
      <div id="right"></div>
      </div>
</div>
嗯,这样html文件就完成了,接下去是CSS(为了简化操作,我们还是用prefix free)。

.wrapper {
    width: 400px;
}
#viewport {
    perspective: 1000px;
    width: 200px;
    height: 200px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -100px 0 0 -100px;
}
.animate {
    animation: myanim 5s infinite;
}
#cube {
    transform: rotateX(50deg) rotateY(50deg);
    transform-style: preserve-3D;
    transition: all 3s;
    width: 100%;
    height: 100%;
}
#cube div {
    width: 100%;
    height: 100%;
    position: absolute;
    color: #efefef;
    font-size: 140px;
    text-align: center;
}
#front {
    background: #556270;
    transform: translateZ(100px);
}
#back {
    background: #9C9F84;
    transform: translateZ(-100px) rotateY(180deg);
}
#top {
    background: #4ECDC4;
    transform: translateY(-100px) rotateX(90deg);
}
#bottom {
    background: #C7F464;
    transform: translateY(100px) rotateX(-90deg);
}
#left {
    background: #FF6B6B;
    transform: translateX(-100px) rotateY(-90deg);
}
#right {
    background: #C44D58;
    transform: translateX(100px) rotateY(90deg);
}
@keyframes myanim {
  0%  { transform: rotateX(0deg) rotateY(0deg); }
  50% { transform: rotateX(360deg) rotateY(360deg); }
  100% { transform: rotateX(0deg) rotateY(0deg); }
}
我们这里仅仅是为每个面添加了不同的颜色,当然大家可以为每个面增加背景图像等等。

然后我们需要用js来实现对动画的控制,我们用到了jquery和jqueryUI,所以实际上我们需要把这些库引进来,恰似下面代码(用的是codepen远端库)。

  <link rel=‘stylesheet‘ href=‘http://codepen.io/assets/libs/fullpage/jquery-ui.css‘>
  <script src=‘http://codepen.io/assets/libs/fullpage/jquery_and_jqueryui.js‘></script>
然后我们可以使用jqueryUI了。

$(function () {
        $("#sliderX").slider({
            value: 50,
            min: 0,
            max: 360,
            animate: "fast",
            slide: function( event, ui ) {
                $("#cube").css("transform", "rotateX(" + ui.value + "deg)")
            }
        });

        $("#sliderY").slider({
            value: 50,
            min: 0,
            max: 360,
            animate: "fast",
            slide: function( event, ui ) {
                $("#cube").css("transform", "rotateY(" + ui.value + "deg)")
            }
        });
    
        $("input").on("click", function () {
            $("#cube").toggleClass("animate");
        });

    });
对于jQueryUI的使用,请大家参照官方网站。完工!

---------------------------------------------------------------

前端开发whqet,关注web前端开发技术,分享网页相关资源。
---------------------------------------------------------------

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。