// FlickSlide v1.0.2 // Copyright (c) 2011 Kosuke Araki - twitterF@kaleido_kosuke // Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php (function ($) { $.fn.flickSlide = function (settings) { var strUA = navigator.userAgent.toLowerCase(), webkitUA = ['iphone', 'android', 'ipad'], runiLayout = false, iLayoutLocation = '', currentX = 0, maxX = 0, slideObj = {}, slideLock = 1, //slideTimer = {}, slideLotation = {}, slideDuration = 4000, slideCount = 0, pagerMax = 0, orientationChangeDelay = 0; for (var i = 0; i < webkitUA.length; i++) { if (strUA.indexOf(webkitUA[i], 0) != -1) { runiLayout = true; if (webkitUA[i] === 'android') { orientationChangeDelay = 400 } if (webkitUA[i] === 'iphone') { orientationChangeDelay = 0 } } } if (runiLayout !== true) { return; } if (typeof $(this) === undefined || $(this).length === 0) { return; } window.addEventListener("orientationchange", function () { if (runiLayout !== true) { return } switch (window.orientation) { case 0: orientationChangeCore(); break; case 90: orientationChangeCore(); break; case -90: orientationChangeCore(); break; } }, false); function orientationChangeCore() { setTimeout(function () { var styles = getComputedStyle($('.moveWrap').get(0)); if (styles) { $('.resizable').css('width', styles.width); $('.slideMask').css('height', $('.move').outerHeight()).css('width', styles.width - 1); maxX = Number($('.flickSlideContainer li.slideUnit').length - 1) * Number(styles.width.replace('px', '')) * -1; $('div.flickSlideContainer ul.move').get(0).style.webkitTransform = 'translate3d(0,0,0)'; currentX = 0; slideCount = 0; slidePager(); } else {} }, orientationChangeDelay); } function lotation() { if (slideLock === 0) { var slideUnitWidth = slideObj.children('li.slideUnit').outerWidth(); //slideObj.get(0).style.webkitTransition = '-webkit-transform 0.6s ease-out'; diffX = -151; if (currentX === maxX) { slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)'; currentX = 0; slideCount = 0; slidePager(); } else { currentX = currentX - slideUnitWidth; slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)'; slideCount++; slidePager(); } } slideLock = 0; //slideTimer = setTimeout(lotation, slideDuration); } function slidePager() { var currentPager = $('.slidePagerPointer.active'); var nextID = '#pager' + String(slideCount); var getPage = slideCount+1; var LastPaget = pagerMax + 1; currentPager.removeClass('active'); $(nextID).addClass('active'); var pager = $('
  • '+ getPage + '/' + LastPaget +'
  • '); bottom.children('ul.slidePager').html(pager); $("#onPage").html(slideCount+1); switch (slideCount) { case 0: $('.flickSlideBottom .bottomLeft').addClass('off'); $('.flickSlideBottom .bottomRight').removeClass('off'); break; case pagerMax: $('.flickSlideBottom .bottomRight').addClass('off'); $('.flickSlideBottom .bottomLeft').removeClass('off'); break; default: $('.flickSlideBottom .bottomLeft').removeClass('off'); $('.flickSlideBottom .bottomRight').removeClass('off'); break; } } $.fn.slideButton = function (settings) { var settings = $.extend({ direction: 'prev', widthSource: {} }, settings); var self = $(this); self.click(function () { var slideUnitWidth = settings.widthSource.outerWidth(); slideLock = 1; slideObj.get(0).style.webkitTransition = '-webkit-transform 0.6s ease-out'; if (settings.direction === 'prev') { if (currentX == 0) { slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)'; slideLock = 0; } else { currentX = currentX + slideUnitWidth; slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)'; slideCount--; slidePager(); slideLock = 0; } } else if (settings.direction === 'next') { if (currentX === maxX) { slideObj.get(0).style.webkitTransform = 'translate3d(' + maxX + 'px, 0, 0)'; slideLock = 0; } else { currentX = currentX - slideUnitWidth; slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)'; slideCount++; slidePager(); slideLock = 0; } } }); } $.fn.touchDrag = function (settings) { var settings = $.extend({ slideDuration: 4000 }, settings); slideObj = $(this); slideDuration = settings.slideDuration; slideObj.bind('touchstart', { type: 'start' }, touchHandler); slideObj.bind('touchmove', { type: 'move' }, touchHandler); slideObj.bind('touchend', { type: 'end' }, touchHandler); function touchHandler(e) { var slideUnitWidth = slideObj.children('li.slideUnit').outerWidth(); var touch = e.originalEvent.touches[0]; if (e.type == "touchstart") { startX = touch.pageX; startY = touch.pageY; startTime = (new Date()).getTime(); } else if (e.type == "touchmove") { diffX = touch.pageX - startX; diffY = touch.pageY - startY; if (Math.abs(diffX) - Math.abs(diffY) > 0) { e.preventDefault(); moveX = Number(currentX + diffX); slideObj.css('-webkit-transition', 'none'); slideObj.get(0).style.webkitTransform = 'translate3d( ' + moveX + 'px, 0, 0)'; } } else if (e.type == "touchend") { var endTime = (new Date()).getTime(); var diffTime = endTime - startTime; if (diffTime < 300) { slideObj.get(0).style.webkitTransition = '-webkit-transform 0.5s ease-out'; } else { slideObj.get(0).style.webkitTransition = '-webkit-transform 0.6s ease-out'; } if (diffX > 150 || (diffX > 60 && diffTime < 400 && orientationChangeDelay === 0)) { if (currentX == 0) { slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)'; } else { currentX = currentX + slideUnitWidth; slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)'; slideCount--; slidePager(); } } else if (diffX < -150 || (diffX < -60 && diffTime < 400 && orientationChangeDelay === 0)) { if (currentX === maxX) { slideObj.get(0).style.webkitTransform = 'translate3d(' + maxX + 'px, 0, 0)'; } else { currentX = currentX - slideUnitWidth; slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)'; slideCount++; slidePager(); } } else { if (currentX === 0) { slideObj.get(0).style.webkitTransform = 'translate3d(0, 0, 0)'; } else if (currentX === maxX) { slideObj.get(0).style.webkitTransform = 'translate3d(' + maxX + 'px, 0, 0)'; } else { slideObj.get(0).style.webkitTransform = 'translate3d(' + currentX + 'px, 0, 0)'; } } slideLock = 0; } } } var settings = $.extend({ target: '', colum: 1, height: 170, duration: 10//4000 }, settings); var contents = $(this); var contentsLength = contents.length; var wrap = $('
    '); var slideMask = $('
    '); var bottom = $('
    '); $(this).contents().find('img').removeAttr('width').removeAttr('height').css({ width: '100%', height: 'auto' }); var loop = Math.floor(contentsLength / settings.colum); loop = contentsLength % settings.colum > 0 ? loop++ : loop; if ( loop == 1 ) { return; } pagerMax = loop - 1; var contentsCount = 0; for (var i = 0; i < loop; i++) { var unitElem = $('
  • ').addClass('slideUnit').addClass('resizable'); var pager = $('
  • '); ///// var pager = $('
  • '+ pagerMax +'
  • '); if (i === 0) { pager.addClass('active') var LastPaget = pagerMax + 1; var pager = $('
  • 1/' + LastPaget +'
  • '); bottom.children('ul.slidePager').html(pager); } for (var j = 0; j < settings.colum; j++) { var itemElem = $('
    '); if (typeof contents[contentsCount] !== undefined) { itemElem.append($(contents[contentsCount]).children()); } unitElem.append(itemElem); contentsCount++; } wrap.contents().find('ul.move').append(unitElem); // bottom.children('ul.slidePager').append(pager); } $(settings.target).after(wrap); $(settings.target).remove(); bottom.children('.bottomLeft').slideButton({ direction: 'prev', widthSource: wrap.contents().find('li.slideUnit') }); bottom.children('.bottomRight').slideButton({ direction: 'next', widthSource: wrap.contents().find('li.slideUnit') }); wrap.contents().find('ul.move').touchDrag({ duration: settings.duration }); wrap.after(bottom); $(window).bind('load', function () { var styles = getComputedStyle($('.moveWrap').get(0)); if (styles) { $('.resizable').css('width', styles.width); $('.slideMask').css('height', $('.move').outerHeight()).css('width', styles.width - 1); maxX = Number($('.flickSlideContainer li.slideUnit').length - 1) * Number(styles.width.replace('px', '')) * -1; } var slideFirstChild = $('ul.move li:first').clone(); $('ul.move').show(); }); } })(jQuery); var is = { ie: navigator.appName == 'Microsoft Internet Explorer', java: navigator.javaEnabled(), ns: navigator.appName == 'Netscape', ua: navigator.userAgent.toLowerCase(), version: parseFloat(navigator.appVersion.substr(21)) || parseFloat(navigator.appVersion), win: navigator.platform == 'Win32' } is.mac = is.ua.indexOf('mac') >= 0; if (is.ua.indexOf('opera') >= 0) { is.ie = is.ns = false; is.opera = true; } if (is.ua.indexOf('gecko') >= 0) { is.ie = is.ns = false; is.gecko = true; }