cloud9carousel是一款高性能的基于jQuery或Zepto的3D旋转木马插件。它可以制作出类似专辑封面的效果。它还可以结合jquery.reflection.js来制作炫酷的图片倒影特效。它的特点有:
- 只有一个js文件,可以和jQuery或Zepto结合使用。
- 高性能,运行速度快。
- 简单易用。
- 通过reflection.js可以制作图片倒影效果。
- 支持鼠标滚轮操作(需要引入mousewheel plugin)。
- 支持自动播放。
- 通过requestAnimationFrame以固定的FPS来支持平滑的动画效果。
- 自动开启GPU来支持CSS3转换动画。
- 可以创建多个实例。
- 可以和任何HTML元素结合使用。
插件依赖
- 需要jQuery1.3+或Zepto 1.1.1+
- 倒影效果需要reflection.js(可选)
- 鼠标滚轮操作需要mousewheel plugin(可选)
使用方法
HTML结构
该旋转木马的基本HTML结构是使用一个<div>
来包裹一组用于旋转的元素,如图片:
<div id="carousel"> <img class="cloud9-item" src="images/1.png" alt="Item #1"> <img class="cloud9-item" src="images/2.png" alt="Item #2"> <img class="cloud9-item" src="images/3.png" alt="Item #3"> <img class="cloud9-item" src="images/4.png" alt="Item #4"> <img class="cloud9-item" src="images/5.png" alt="Item #5"> <img class="cloud9-item" src="images/6.png" alt="Item #6"> </div> <div id="buttons"> <button class="left"> ← </button> <button class="right"> → </button> </div>
JAVASCRIPT
在页面DOM元素加载完毕之后可以通过下面的方法来初始化该旋转木马插件。
$("#carousel").Cloud9Carousel( { buttonLeft: $("#buttons > .left"), buttonRight: $("#buttons > .right"), autoPlay: 1, bringToFront: true } );
配置参数
旋转木马参数
参数 | 描述 | 默认值 |
xOrigin | 旋转木马X方向的中心 | (容器宽度 / 2) |
yOrigin | 旋转木马Y方向的中心 | (容器高度 / 2) |
xRadius | 旋转木马宽度的一半 | (容器宽度 / 2.3) |
yRadius | 旋转木马高度的一半 | (容器高度 / 2.3) |
farScale | 一个旋转木马项在最远点的缩放,取值0-1 | 0.5 |
mirror | 参考下面的倒影选项 | none |
transforms | 如果浏览器支持CSS3 transforms则使用它 | true |
smooth | 如果浏览器支持requestAnimationFrame API则用它来制作平滑过渡效果 | true |
fps | 每一秒的动画帧(如果关闭平滑动画) | 30 |
speed | 旋转木马相对速度的因子。1表示慢速,4表示中等速度,10表示快速 | 4 |
autoPlay | 自动播放旋转木马。0表示不自动播放 | 0 |
autoPlayDelay | 自动播放状态下的延迟时间,单位毫秒 | 4000 |
mouseWheel | 使用鼠标滚轮来旋转。需要一个mousewheel 事件,可以通过mousewheel plugin来提供 |
false |
bringToFront | 点击项将会旋转到最前面 | false |
buttonLeft | 元素的jQuery选择器,使旋转木马左边的元素旋转到最前面(逆时针旋转) | none |
buttonRight | 元素的jQuery选择器,使旋转木马右边的元素旋转到最前面(顺时针旋转) | none |
itemClass | 旋转木马项的class | "cloud9-item" |
handle | 可以和旋转木马互动的字符串命令,如:$("#carousel").data("carousel").go(1) |
倒影选项
在你将reflection.js引入页面之后,可以配置它的一些参数:
mirror: { gap: 12, /* 12 pixel gap between item and reflection */ height: 0.2, /* 20% of item height */ opacity: 0.4 /* 40% opacity at the top */ }
注意,Zepto和reflection.js不能一起工作。
参数 | 描述 | 默认值 |
gap | 倒影和项目之间的垂直间隙,单位像素 | 2 |
height | 倒影是项目高度的几分之几,范围0-1 | 1/3 |
opacity | 倒影的透明度,范围0-1 | 0.5 |
方法
下面的方法可以在旋转木马初始化时候在carousel对象上调用。
// Spin by three items clockwise $("#carousel").data("carousel").go( 3 );
方法 | 描述 | 参数 |
go( count ) | 旋转指定数量的项 | count:项目数。+表示顺时针,-表示逆时针 |
nearestIndex() | 返回最接近前端基于0的索引 | none |
nearestItem() | 返回最接近前端的项的倒影对象 | none |
deactivate() | 禁用旋转木马 | none |
itemsRotated( | 返回从初始零位置旋转的项目的内插数。 | none |
floatIndex() | Returns an interpolated value of the item "index" at the front of the carousel. | none |
回调函数
回调函数可以传入旋转木马的构造函数作为参数:
// Hide carousel while items are loading $("#carousel").css( 'visibility', 'hidden' ).Cloud9Carousel( { bringToFront: true, onLoaded: function( carousel ) { // Show carousel $(carousel).css( 'visibility', 'visible' ); alert( 'Carousel is ready!' ); }, onRendered: function( carousel ) { var item = $(carousel).data("carousel").nearestItem(); console.log( "Item closest to the front: " + $(item).attr("alt") ); } } );