这是一款非常迷你型的jQuery幻灯片插件。插件中带有放大镜效果,鼠标悬停在幻灯片上时即可放大当前的幻灯片图片。

插件中集成了 Cloud Zoom pluginFancybox 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'));
    });
});