跑马灯式轮播图js、小缩略图点击切换显示大图方法javascript

时间: 作者:admin 浏览:
/**
点击图片列表弹出大图弹层以及缩略图点击显示对应大图
本方法需要用到superslide.js插件以及$.resizeImageS(),superslide好找,resizeImages()方法请打开 http://www.seozhijia.net/javascript/130.html
需要引用jquery.superSlide.js插件
**/
function photosSlide(options){
    var defaults = {
        $slider:null,       //最外层的元素
        thumbsViewCount:0,  // 可视缩略图数量
        beforeRender:null,  //渲染前需执行的函数
        afterRender:null,   //渲染后需执行的函数
        photosIndex:0   //图片下标
    };
    var options = $.extend({}, defaults, options || {});
    if(typeof options.$slider !=='object'){
        alert("请写入正确的元素名")
    }
    var interTime = 3000;                                               //轮播秒数
    var thumbsDuration = 200;                                           //小图列表移动的速度,200毫秒移完
    var middleThumbImgIndex = Math.ceil(options.thumbsViewCount / 2); //-------------------------缩略图中心数,(总数/2 向上取整)
    var $productImgSlider = options.$slider;
    var $thumbImgs = $productImgSlider.find('.slide-menu .thumbs img');
    //var $thumbImgContainer = $productImgSlider.find('.slide-menu .thumbs a')||$productImgSlider.find('.slide-menu .thumbs p');
    var $thumbImgContainer = $thumbImgs.parent();
    var thumbImgWidth = $thumbImgContainer.width();
    var thumbImgHeight = $thumbImgContainer.height();
    var $detailImgs = $productImgSlider.find('.slide-content img');
    var $thumbsUl = $productImgSlider.find('.slide-menu .thumbs ul');
    var thumbsItemWidth = $thumbsUl.find('li').outerWidth(true);        //outerWidth  可以把padding,margin的宽度也一起拿到
    var thumbsTotalCount = $thumbsUl.find('li').length;
    $thumbsUl.width(thumbsItemWidth * thumbsTotalCount);                // 给缩略图容器设置宽度

    if($.isFunction(options.beforeRender)){
        options.beforeRender();
    }
    var prevIndex='';
    $productImgSlider.slide({
        effect: 'left',
        trigger: 'click',
        mainCell: '.slide-content ul',
        titCell: '.slide-menu .thumbs li',
        interTime: interTime,
        pnLoop:false,
        defaultIndex: options.photosIndex,              //图片下标索引
        autoPage: false,
        autoPlay: false,
        startFun: function (index) {
            //大图缩放
            $detailImgs.each(function(i){
                var $self=$(this);
                var $imgParent=$self.parent();
                $self.ResizeImages(true, $imgParent.width(), $imgParent.height(), 'cover');
            })
            //大图捡漏
            var detailTimer=setTimeout(function(){
                $detailImgs.each(function(i){
                    var $self=$(this);
                    if(!$self.hasClass("resized")){
                        var $imgParent=$self.parent();
                        $self.ResizeImages(true, $imgParent.width(), $imgParent.height(), 'cover');
                    }
                })
                if(detailTimer){
                    clearTimeout(detailTimer); 
                }
            },1000);
            //小图缩放
            $thumbImgs.each(function(i){
                var $self=$(this);
                var $imgParent=$self.parent();
                $self.ResizeImages(true, $imgParent.width(), $imgParent.height(), 'cover');
            })
            //小图捡漏
            var thumbTimer=setTimeout(function(){
                $thumbImgs.each(function(i){
                    var $self=$(this);
                    if(!$self.hasClass("resized")){
                        var $imgParent=$self.parent();
                        $self.ResizeImages(true, $imgParent.width(), $imgParent.height(), 'cover');
                    }
                })
                if(thumbTimer){
                    clearTimeout(thumbTimer); 
                }
            },1000);
            // 小图位置移动//缩略图跑马灯
            if ($thumbsUl.find('li').length > options.thumbsViewCount) {//现有的图片数量大于当前要显示的图册小图数量,才执行以下移动操作
                if(index > prevIndex && (index+1)>middleThumbImgIndex && (index+1)<=(thumbsTotalCount-middleThumbImgIndex)){//从左往右走
                    $thumbsUl.animate({ left:(middleThumbImgIndex-index-1)*thumbsItemWidth }, thumbsDuration);
                }else if(index<previndex>middleThumbImgIndex && (index+1)<=(thumbsTotalCount-middleThumbImgIndex)){//从右往左走
                    $thumbsUl.animate({ left:-(index+1-middleThumbImgIndex)*thumbsItemWidth}, thumbsDuration);
                }else if((index+1) <= middleThumbImgIndex){//前(可视数量中间数)个
                    $thumbsUl.animate({ left: 0 }, thumbsDuration);
                }else if((index+1) > (thumbsTotalCount-middleThumbImgIndex)){//后(可视数量中间数)个
                    $thumbsUl.animate({ left: -thumbsItemWidth * (thumbsTotalCount - options.thumbsViewCount) }, thumbsDuration);
                }
            }
            prevIndex=index;
        }
    });
    if($.isFunction(options.afterRender)){
        options.afterRender();
    }
}

微信公众号
微信公众号:
  • 前端全栈之路(微信群)
前端QQ交流群
前端QQ交流群:
  • 794324979
  • 734802480(已满)

更多文章

栏目文章


Copyright © 2014-2023 seozhijia.net 版权所有-粤ICP备13087626号-4