スワイプ レスポンシブ ギャラリー スライダー

ギャラリー参考
http://black-flag.net/jquery/20130514-4588.html

ローディング参考
http://mori-coding.blog.jp/archives/6760786.html

レスポンシブ 幅100% 高さ同じ比率 参考
http://tsudoi.org/weblog/?p=2949

これ少々改造

サイドナビ 透明度変更のためthumbOpc2項目追加

 

//これはローディング画像を出すスクリプト 後入れ
window.onload = function(){
	$(function() {
		$("#loading").fadeOut(0);
		$(".flickSlider").fadeIn(500);
	});
}



$(function(){
    $(window).load(function(){
        var setWrap = $('.flickSlider'),//スライダー全体を囲うブロック要素名(IDでも可)
        setMainView = $('.flickView'),//メインビジュアル部分を囲うブロック要素名(IDでも可)
        setThumbNail = $('.flickThumb'),//サムネイル部分を囲うブロック要素名(IDでも可)
        setMaxWidth = 800,//スライダー部分の最大幅
        setMinWidth = 320,//スライダー部分の最小幅
        thumbNum = 6,//一行に並べるサムネイル数
        thumbOpc = 0.5,//サムネイルの非アクティブ時の透過度
		thumbOpc2 = 0.3,//サイドバーの非アクティブ時の透過度
        scrollSpeed  = 500,//スライドアニメーションスピード
        delayTime = 5000,//スライドアニメーション待機時間
        easing = 'linear',//スライドアニメーションのイージング指定
        sideNavi = 'on', // 'on' or 'off'//左右NEXT/BACKの表示/非表示(非表示の場合は「off」等)
        autoPlay = 'off'; // 'on' or 'off'//自動切換え動作のON/OFF(自動切換えさせない場合は「off」等)
		
        var agent = navigator.userAgent;
        setWrap.each(function(){
            var thisObj = $(this),
            childMain = thisObj.find(setMainView),mainUl = childMain.find('ul'),mainLi = mainUl.find('li'),mainLiLink = mainLi.children('a'),mainLiImg = mainLi.find('img'),
            childThumb = thisObj.find(setThumbNail),thumbUl = childThumb.find('ul'),thumbLi = childThumb.find('li'),thumbLiFst = childThumb.find('li:first'),thumbLiLst = childThumb.find('li:last'),
            mainWidth = parseInt(childMain.css('width')),mainHeight = parseInt(childMain.css('height')),listCount = mainUl.children('li').length;
 
            thisObj.css({display:'block'});
 
            // レスポンシブ動作メイン
            imgSize();
            function imgSize(){
                var windowWidth = parseInt($(window).width()),
                setUlLeft = parseInt(mainUl.css('left')),
                setlistWidth = parseInt(mainLi.css('width')),
                setLeft = setUlLeft / setlistWidth;
 
                if(windowWidth >= setMaxWidth) {
                    thisObj.css({width:setMaxWidth});
                    childMain.css({width:setMaxWidth});
                    mainUl.css({width:((setMaxWidth)*(listCount))});
                    mainLi.css({width:setMaxWidth});
 
                    var listWidthA = parseInt(mainLi.css('width')),
                    leftMax = -((listWidthA)*((listCount)-1)),
                    baseHeight = mainLiImg.height();
                    childMain.css({height:baseHeight});
                    mainUl.css({height:baseHeight});
                    mainLi.css({height:baseHeight});
 
                    thumbUl.css({width:setMaxWidth});
                    thumbLi.css({width:((setMaxWidth)/(thumbNum)),height:''});
                } else if(windowWidth < setMaxWidth) {
                    var listWidthB = parseInt(childMain.css('width')),
                    leftMax = -((listWidthB)*((listCount)-1));
                    thisObj.css({width:setMaxWidth});
                    if(windowWidth >= setMinWidth) {
                        thisObj.css({width:'100%'});
                        childMain.css({width:'100%'});
                        mainUl.css({width:((listWidthB)*(listCount))});
                        mainLi.css({width:(listWidthB)});
                    } else if(windowWidth < setMinWidth) {
                        thisObj.css({width:setMinWidth});
                        childMain.css({width:setMinWidth});
                        mainUl.css({width:((setMinWidth)*(listCount))});
                        mainLi.css({width:setMinWidth});
                    }
                    var reHeight = mainLiImg.height();
                    childMain.css({height:reHeight});
                    mainUl.css({height:reHeight});
                    mainLi.css({height:reHeight});
 
                    var reWidth = setThumbNail.width();
                    thumbUl.css({width:reWidth});
                    thumbLi.css({width:((reWidth)/(thumbNum))});
                }
 
                var adjLeftWidth = parseInt(mainLi.css('width')),
                adjLeft = adjLeftWidth * setLeft;
                mainUl.css({left:(adjLeft)});
            }
            imgSize();
            $(window).resize(function(){
                if(!(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1 || agent.search(/Android/) != -1)){
                    if(autoPlay == 'on'){clearInterval(setTimer);}
                    imgSize();
                    if(autoPlay == 'on'){slideTimer();}
                } else {
                    imgSize();
                }
            });
 
            // フリックアクション
            var isTouch = ('ontouchstart' in window);
            mainUl.on(
                {'touchstart mousedown': function(e){
                    if(mainUl.is(':animated')){
                        e.preventDefault();
                    } else {
                        if(autoPlay == 'on'){clearInterval(setTimer);}
                        if(!(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1 || agent.search(/Android/) != -1)){
                            e.preventDefault();
                        }
                        this.pageX = (isTouch ? event.changedTouches[0].pageX : e.pageX);
                        this.leftBegin = parseInt($(this).css('left'));
                        this.left = parseInt($(this).css('left'));
                        this.touched = true;
                    }
                },'touchmove mousemove': function(e){
                    if(!this.touched){return;}
                    e.preventDefault();
                    this.left = this.left - (this.pageX - (isTouch ? event.changedTouches[0].pageX : e.pageX) );
                    this.pageX = (isTouch ? event.changedTouches[0].pageX : e.pageX);
                    $(this).css({left:this.left});
                },'touchend mouseup mouseout': function(e){
                    if (!this.touched) {return;}
                    this.touched = false;
 
                    var setThumbLiActive = thumbUl.children('li.active'),
                    listWidth = parseInt(mainLi.css('width')),leftMax = -((listWidth)*((listCount)-1));
 
                    if(((this.leftBegin)-30) > this.left && (!((this.leftBegin) === (leftMax)))){
                        $(this).stop().animate({left:((this.leftBegin)-(listWidth))},scrollSpeed,easing);
                        setThumbLiActive.each(function(){
                            $(this).removeClass('active');
                            $(this).next().addClass('active');
                        });
                    } else if(((this.leftBegin)+30) < this.left && (!((this.leftBegin) === 0))){
                        $(this).stop().animate({left:((this.leftBegin)+(listWidth))},scrollSpeed,easing);
                        setThumbLiActive.each(function(){
                            $(this).removeClass('active');
                            $(this).prev().addClass('active');
                        });
                    } else if(this.leftBegin === 0) {
                        $(this).stop().animate({left:'0'},scrollSpeed,easing);
                    } else if(this.leftBegin <= leftMax) {
                        $(this).stop().animate({left:(leftMax)},scrollSpeed,easing);
                    } else if(this.left >= 0) {
                        $(this).stop().animate({left:'0'},scrollSpeed);
                    } else if(this.left <= leftMax) {
                        $(this).stop().animate({left:(leftMax)},scrollSpeed,easing);
                    } else {
                        $(this).stop().animate({left:(this.leftBegin)},scrollSpeed,easing);
                    }
                    compBeginLeft = this.leftBegin;
                    compThisLeft = this.left;
                    mainLiLink.click(function(e){
                        if(!(compBeginLeft === compThisLeft)){
                            e.preventDefault();
                        }
                    });
                    if(autoPlay == 'on'){slideTimer();}
                }
            });
 
            // ボタン移動動作
            thumbLi.click(function(){
                if(autoPlay == 'on'){clearInterval(setTimer);}
                var listWidth = parseInt(mainLi.css('width')),leftMax = -((listWidth)*((listCount)-1)),
                connectCont = thumbLi.index(this);
                mainUl.stop().animate({left:(-(listWidth)*(connectCont))},scrollSpeed,easing);
                thumbLi.removeClass('active');
                $(this).addClass('active');
                if(autoPlay == 'on'){slideTimer();}
            });
            thumbLiFst.addClass('active');
            thumbLi.css({opacity:thumbOpc});
 
            // サイドナビボタン(有り無し)
            if(sideNavi == 'on'){
                childMain.append('<div class="btnPrev"></div><div class="btnNext"></div>');
                var setPrev = childMain.find('.btnPrev'),setNext = childMain.find('.btnNext'),setPrevNext = childMain.find('.btnPrev,.btnNext');
                setPrevNext.css({opacity:thumbOpc2});
 
                setNext.click(function(){
                    var setThumbLiActive = thumbUl.children('li.active');
                    setThumbLiActive.each(function(){
                        var listLengh = thumbLi.length;
                        var listIndex = thumbLi.index(this);
                        var listCount = listIndex+1;
                        if(listLengh == listCount){
                            thumbLiFst.click();
                        } else {
                            $(this).next('li').click();
                        }
                    });
                });
                setPrev.click(function(){
                    var setThumbLiActive = thumbUl.children('li.active');
                    setThumbLiActive.each(function(){
                        var listLengh = thumbLi.length;
                        var listIndex = thumbLi.index(this);
                        var listCount = listIndex+1;
                        if(1 == listCount){
                            thumbLiLst.click();
                        } else {
                            $(this).prev('li').click();
                        }
                    });
                });
            }
 
            // サムネイルマウスオーバー
            if(!(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1 || agent.search(/Android/) != -1)){
                thumbLi.hover(function(){
                    $(this).stop().animate({opacity:'1'},300);
                },function(){
                    $(this).stop().animate({opacity:thumbOpc},300);
                });
                if(sideNavi == 'on'){
                    setPrevNext.hover(function(){
                        $(this).stop().animate({opacity:'0.5'},300);
                    },function(){
                        $(this).stop().animate({opacity:thumbOpc2},300);
                    });
                }
            }
 
            // 自動再生(有り無し)
            if(autoPlay == 'on'){
                function slideTimer() {
                    setTimer = setInterval(function(){
                        var setThumbLiActive = thumbUl.children('li.active');
                        setThumbLiActive.each(function(){
                            var listLengh = thumbLi.length;
                            var listIndex = thumbLi.index(this);
                            var listCount = listIndex+1;
                            if(listLengh == listCount){
                                thumbLiFst.click();
                            } else {
                                $(this).next('li').click();
                            }
                        });
                    },delayTime);
                }
                slideTimer();
            }
        });
    });
});
/*--------------------------------
フリックギャラリー
---------------------------------*/

/*ローディング画像*/
#loading{ 	position: relative;
	width: 100%;
	height: 100%;
	padding: 75% 0 0;}
#loading .inner{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: url(/wp-content/themes/D/d/img/parts/wait3.gif) center center no-repeat #FFF;
	}



/* .flickSlider
--------------------------- */
.flickSlider {
    margin: 24px auto;
    text-align: left;
    display: none;
}
 
/* .flickView
--------------------------- */
.flickSlider .flickView {
    width: 100%;
    text-align: left;
    position: relative;
    overflow: hidden;
}
.flickSlider .flickView ul {
    top: 0;
    left: 0;
    width: 100%;
    position: absolute;
    overflow: hidden;
}
.flickSlider .flickView ul li {
    width: 100%;
    float: left;
    display: inline;
    overflow: hidden;
}
.flickSlider .flickView ul li img {
    width: 100%;
	height:auto;
}
 
/* .flickThumb
--------------------------- */
.flickSlider .flickThumb {
    width: 100%;
    overflow: hidden;
}
.flickSlider .flickThumb ul {
    width: 110%;
}
.flickSlider .flickThumb ul li {
    float: left;
    cursor: pointer;
    display: inline;
}
.flickSlider .flickThumb ul li img {
    width: 100%;
	height:auto;
}
.flickSlider .flickThumb ul li.active {
    filter:alpha(opacity=100)!important;
    -moz-opacity: 1!important;
    opacity: 1!important;
}
 
/* sideNavi
------------------------- */
.flickSlider .btnPrev,
.flickSlider .btnNext {
    top: 0;
    width: 5%;
    height: 100%;
    position: absolute;
    cursor: pointer;
}
.flickSlider .btnPrev {
    left: 0; 
    background: #6d6d6d url(/wp-content/themes/D/d/img/parts/btnPrev.png) no-repeat center center;
}
 
.flickSlider .btnNext {
    right: 0;
    background: #6d6d6d url(/wp-content/themes/D/d/img/parts/btnNext.png) no-repeat center center;
}
 
 
/* =======================================
    ClearFixElements
======================================= */
.flickSlider .flickView ul:after,
.flickSlider .flickThumb ul:after {
    content: ".";
    height: 0;
    clear: both;
    display: block;
    visibility: hidden;
}
 
.flickSlider .flickView ul,
.flickSlider .flickThumb ul {
    display: inline-block;
    overflow: hidden;
}


.flickSlider .flickView ul li a img:hover{ opacity:1;
filter: alpha(opacity=100);        /* ie lt 8 */
-ms-filter: "alpha(opacity=100)";  /* ie 8 */
-moz-opacity:1;                 /* FF lt 1.5, Netscape */
-khtml-opacity: 1;              /* Safari 1.x */}