(function($) { $.fn.infiniteFlow = function(options) { var wrapper = this; var defaults = { direction: 'left', // 移åæ¹å 'left' or 'right' onmouseStop: false, // ãªã³ãã¦ã¹æã«åæ¢ãããã©ãã true or false speed: 3000 // 移åã¹ãã¼ã }; // è¨å®ããè¦ç´ ãåå¨ããã¨ãã ãå®è¡ if(wrapper.length) { var setting = $.extend(defaults, options), // 移åããè¦ç´ infiniteArea = wrapper.children(); // åè¦ç´ ã®CSSåæè¨å® wrapper.css({ position: 'relative', width: '100%', overflow: 'hidden' }); infiniteArea.css({ position: 'relative', margin: 0, padding: 0 }).children('li').css({ float: 'left', listStyle: 'none' }); // ããã¼ã®åæææ° var bnrInitLength = infiniteArea.children('li').length, // ããã¼ã®æ¨ªå¹ (ãã¼ã¸ã³ãªã©å«ã) bnrWidth = infiniteArea.children('li').outerWidth(true), // ããã¼ã®ç§»åè·é¢ posX = 0, // functionå ã§ä½¿ãå¤æ°ã®å®£è¨ infiniteFunc, windowWidth, bnrLength, infiniteAreaWidth; // ããã¼ã®ã«ã¼ã移åå¦ç function infiniteBnr() { infiniteFunc = setInterval(function() { // 移åæ¹åãå³ã®æ if(setting.direction == 'right') { // ããã¼1ã¤å以ä¸ç§»åãã¦ããæ if (posX >= bnrWidth) { // 移åè·é¢ã0ã«æ»ã posX = 0; // æå¾å°¾ã®ããã¼ãå é ã«ç§»å infiniteArea.children('li:last-child').prependTo(infiniteArea); } // 移åè·é¢ã«+1 posX += 1; // è¦ç´ ã®ç§»å infiniteArea.css({ left: posX - bnrWidth + 'px' }); // 移åæ¹åãå·¦ã®æ } else { // ããã¼1ã¤å以ä¸ç§»åãã¦ããæ if (- posX >= bnrWidth) { // 移åè·é¢ã0ã«æ»ã posX = 0; // å é ã®ããã¼ãæå¾å°¾ã«ç§»å infiniteArea.children('li:first-child').appendTo(infiniteArea); } // 移åè·é¢ã«-1 posX -= 1; // è¦ç´ ã®ç§»å infiniteArea.css({ left: posX + 'px' }); } }, (setting.speed / bnrWidth)); } // ããã¼ã®è¿½å function addBnr() { // ç»é¢å¹ ã®åå¾ windowWidth = $(window).width(), // ããã¼ã®ç¾å¨ã®ææ° bnrLength = infiniteArea.children('li').length, // 移åè¦ç´ ã®å¹ infiniteAreaWidth = bnrLength * bnrWidth; // ç»é¢å¹ ãã移åè¦ç´ ã®å¹ (+ããã¼iæåã®å¹ )ãå°ããå ´å while (windowWidth >= infiniteAreaWidth - bnrWidth){ // ããã¼ã®è¿½å for(var i = 0; i < bnrInitLength; i++) { infiniteArea.children('li').eq(i).clone().appendTo(infiniteArea); } // åè¦ç´ ã®CSSè¨å® settingCss(); } } // åè¦ç´ ã®CSSè¨å® function settingCss() { // ããã¼ã®ç¾å¨ã®ææ° bnrLength = infiniteArea.children('li').length, // 移åè¦ç´ ã®å¹ infiniteAreaWidth = bnrLength * bnrWidth; // åè¦ç´ ã®æå® infiniteArea.css({ width: infiniteAreaWidth }).children('li').css({ float: 'left', listStyle: 'none' }); } // åè¦ç´ ã®CSSè¨å® settingCss(); // èªã¿è¾¼ã¿å¾ã®å¦ç $(window).on('load', function() { addBnr(); infiniteBnr(); }); var timer = null; // ãªãµã¤ãºæã®å¦ç $(window).on('resize', function() { // 0.2ç§ãªãµã¤ãºå¦çãçºçããªãã£ããå®è¡ clearTimeout(timer); timer = setTimeout(function() { addBnr(); }, 200); }); // 移ååæ¢ã®å¦ç if(setting.onmouseStop) { // ãªã³ãã¦ã¹æã«ç§»åãæ¢ãã infiniteArea.on('mouseenter', function() { clearInterval(infiniteFunc); }); // ãã¦ã¹ãå¤ããæã«ç§»åãåé infiniteArea.on('mouseleave', function() { infiniteBnr(); }); } } } })(jQuery);