这是一款非常简单的带前后控制按钮的jQueryCSS3 3D旋转木马特效。该旋转木马特效使用CSS3 3D transforms属性来渲染一个3D立体旋转木马,并通过简单的jQuery代码来控制旋转木马的旋转动画。

关于3D旋转木马的制作教程,可以参看:CSS3 3D transforms系列教程-3D旋转木马

使用方法

HTML结构

该3D旋转木马的HTML结构如下,其中<nav>元素是前后导航按钮。

<div id="carousel">
    <div id="container" tcc-rotation="0">
        <item><img src="img/1.jpg"></item>
        <item><img src="img/2.jpg"></item>
        <item><img src="img/3.jpg"></item>
        <item><img src="img/4.jpg"></item>
        <item><img src="img/5.jpg"></item>
        <item><img src="img/6.jpg"></item>
    </div>
    
    <nav class="tc-btn-container">
        <div class="tc-next">NEXT</div>
        <div class="tc-prev">PREV</div>
    </nav>
</div>
                
CSS样式

需要为该3D旋转木马特效添加以下的一些CSS样式。由于IE浏览器不支持transform-style: preserve-3d;属性,所以在IE浏览器中是看不到3D透视效果的。

#carousel {
  display: block;
  height: auto;
  margin: 0 auto;
  -webkit-perspective: 80px;
  perspective: 800px;
  position: relative;
  top: 200px;
  width: 800px;
}

#container {
  display: block;
  height: 200px;
  margin: 0 auto;
  transform: rotateY(0deg);
  -webkit-transform-origin: center bottom 0;
  transform-origin: center bottom 0;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-transition: all 1s ease-in-out;
  transition: all 1s ease-in-out;
  width: 200px;
}

item {
  display: block;
  margin: 0;
  padding: 0;
  width: 200px;
  transform: translateZ(400px);
  position: absolute;
}

item img { width: 100%; }

.tc-btn-container {
  display: block;
  float: left;
  height: 35px;
  margin-top: -12.5px;
  position: absolute;
  top: 50%;
  width: 100%;
}

.tc-next {
  background-color: #333;
  color: white;
  display: block;
  float: right;
  font-size: 12px;
  padding: 10px;
  width: auto;
  cursor: pointer;
}

.tc-prev {
  background-color: #333;
  color: white;
  display: block;
  float: left;
  font-size: 12px;
  padding: 10px;
  width: auto;
  cursor: pointer;
}                  
                
JavaScript

在页面初始化完毕之后,可以通过下面的代码来激活该3D旋转木马插件。

$(document).ready(function($){

  var crotation;
  var rotateto = 0;
  var halfrotation = 180;
  
  function tcRotate(deg){  
      $('#container').css({
          'transform'         : 'rotateY('+ deg +'deg)',
          '-webkit-transform' : 'rotateY('+ deg +'deg)'
      });
  }
  
  $('item').on('click', function(e){
      e.preventDefault();
      
      crotation = $('#container').attr('tcc-rotation');
      rotation = $(this).attr('tc-rotation');       
      rotateto = crotation - rotation;
      tcRotate(rotateto);
      crotation = rotateto;
      
  });
  
  $('.tc-next').on('click', function(e){
      e.preventDefault();
      rotateto -= 60;
      tcRotate(rotateto);
  });
  $('.tc-prev').on('click', function(e){
      e.preventDefault();
      rotateto += 60;
      tcRotate(rotateto);
  });

});                  
                

该旋转木马插件的github地址为:https://github.com/marffinn/jQuery-CSS-Carousel