这是一款非常迷你型的jQuery幻灯片插件。插件中带有放大镜效果,鼠标悬停在幻灯片上时即可放大当前的幻灯片图片。
插件中集成了 Cloud Zoom plugin 和 Fancybox plugin。
HTML
<div class="item">
<div class="thumb_wrapper">
<div class="thumb">
<ul>
<li>
<a href="images/formstack1.jpg">
<img src="images/thumbs/formstack1.jpg" alt="Formstack 1"/>
</a>
</li>
<li>...</li>
...
</ul>
</div>
<a class="prev" href="#"></a>
<a class="next" href="#"></a>
<span>Hover to zoom, click to view</span>
</div>
<div class="description">
<h2>Portfolio Item</h2>
<p>Some description</p>
</div>
</div>
另外,还要为每一个超链接添加下面的属性:
<a rev="group1" rel="zoomHeight:200, zoomWidth:400, adjustX: 10, adjustY:-4, position:'body'" class='cloud-zoom' href="images/formstack1.jpg">...</a>
因为集成的两个jQuery插件中都使用了“rel”属性,而我们在这里我们需要改变Fancybox的“rel”属性,所以我们使用了“rev”属性。Fancybox能够通过“rev”属性给定的图片组创建一个幻灯片。
为了配置Cloud Zoom我们在“rel”中设定了一些参数。
调用插件
首先引入必要的js和css文件:
><link rel="stylesheet" type="text/css" href="cloud-zoom/cloud-zoom.css" />
<link rel="stylesheet" type="text/css" href="fancybox/jquery.fancybox-1.3.4.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="fancybox/jquery.easing-1.3.pack.js"></script>
<script type="text/javascript" src="fancybox/jquery.fancybox-1.3.4.js"></script>
<script type="text/javascript" src="cloud-zoom/cloud-zoom.1.0.2.js"></script>
调用插件
$("#content .cloud-zoom").fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'none',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : true,
'overlayColor' : '#000',
'cyclic' : true,
'easingIn' : 'easeInOutExpo'
});
$("#content .mousetrap").live('click',function(){
$(this).prev().trigger('click');
});
var $content = $('#content'),
$thumb_list = $content.find('.thumb > ul');
$thumb_list.each(function(){
var $this_list = $(this),
total_w = 0,
loaded = 0,
//preload all the images first
$images = $this_list.find('img'),
total_images= $images.length;
$images.each(function(){
var $img = $(this);
$('
').load(function(){
++loaded;
if (loaded == total_images){
$this_list.data('current',0).children().each(function(){
total_w += $(this).width();
});
$this_list.css('width', total_w + 'px');
//next / prev events
$this_list.parent()
.siblings('.next')
.bind('click',function(e){
var current = $this_list.data('current');
if(current == $this_list.children().length -1) return false;
var next = ++current,
ml = -next * $this_list.children(':first').width();
$this_list.data('current',next)
.stop()
.animate({
'marginLeft' : ml + 'px'
},400);
e.preventDefault();
})
.end()
.siblings('.prev')
.bind('click',function(e){
var current = $this_list.data('current');
if(current == 0) return false;
var prev = --current,
ml = -prev * $this_list.children(':first').width();
$this_list.data('current',prev)
.stop()
.animate({
'marginLeft' : ml + 'px'
},400);
e.preventDefault();
});
}
}).attr('src',$img.attr('src'));
});
});