1/* 2 # Swiper.js를 ì´ì©í ì¬ë¼ì´ë ë©ë´ :: 2017-11-16 LDD 3 구조 4 <div class="js_test_menu"> 5 <ul> 6 <li>1</li> 7 <li class="hit">2</li> 8 <li>3</li> 9 </ul> 10 </div> 11 ele: .js_test_menu (ìì´ëë¡ë ì¬ì© ê°ë¥) 12 active: { 13 class: '.active', // íí¸(ì¡í°ë¸)ìì í´ëì¤ ëë ìì´ë(.active or #active) 14 speed: 500, // íí¸(ì¡í°ë¸)ììê¹ì§ ì´ë ìë(0ì´ë©´ í¨ê³¼ ìì) 15 position: 'left' // leftì¼ ê²½ì° ë¬´ì¡°ê±´ ì¼ìª½ì´ íí¸ ììê° ëì¤ê³ centerë©´ ì ê°ì´ë°ì íí¸ ììê° ëì´ 16 } 17 ìì : 18 var SwiperJSMenu = new SwiperJSMenu('.js_topmenu', {class:'.hit', speed:1000, position:'center'}); 19 SwiperJSMenu.action(); 20 21 active ë³ê²½ì ë°ë¼ ì¬ë¼ì´ë ìì¹ ë³ê²½: 22 var SwiperJSMenu = new SwiperJSMenu('.js_topmenu', {class:'.hit', speed:1000, position:'center'}); 23 SwiperJSMenu.action(); 24 $('.js_topmenu').find('.hit').removeClass('hit'); 25 $('.js_topmenu').find('li:eq(3)').addClass('hit'); 26 SwiperJSMenu.moveUpdate(); 27 28 2ì°¨ê°ê³µ(ì¬ë¼ì´ë ìì¹ ë³ê²½): 29 var SwiperJSMenu = new SwiperJSMenu('.js_topmenu', {class:'.hit', speed:1000, position:'center'}); 30 SwiperJSMenu.action(); 31 SwiperJSMenu.swiper().setWrapperTransition(1000); 32 SwiperJSMenu.swiper().setWrapperTranslate(-350); 33 ì´ë°ìì¼ë¡ swiper.jsì ìµì ì¼ë¡ 2ì°¨ ê°ê³µ ê°ë¥ 34*/ 35(function($) { 36 var SwiperJSMenu = function(ele, active) { 37 if(typeof(Swiper) != 'function') return {'error':'swiper.js를 먼ì í¸ì¶ íì¸ì.'}; 38 this._swiper; 39 this.ele = ele; 40 this.rand = Math.floor(Math.random()*100000)+1; // ëì ë°ì 41 this.defaultClass = 'js_swiper_menu_'; // 기본 í´ëì¤ ì ëì¬ 42 this.itemClass = this.defaultClass+'item_'+this.rand; // ì¬ë¼ì´ë ìì´í í´ëì¤ ì¶ê° 43 this.wrapClass = this.defaultClass+'wrap_'+this.rand; // ulì í´ëì¤ 44 this.prevClass = this.defaultClass+'prev_'+this.rand; // prev class 45 this.nextClass = this.defaultClass+'next_'+this.rand; // next class 46 this.activeClass = this.defaultClass+'active_'+this.rand; // active class 47 this._width = 0; // ì ì²´ í¬ê¸° ì´ê¸°ê° 48 this.active = active; 49 if(this.active['hit_class'] == undefined) this.active['hit_class'] = '.active'; 50 if(this.active['speed'] == undefined) this.active['speed'] = 300; 51 if(this.active['position'] == undefined) this.active['position'] = 'center'; 52 if(this.active['margin_right'] == undefined) this.active['margin_right'] = 1; 53 if(this.active['auto_height'] == undefined) this.active['auto_height'] = false; 54 return this._swiper; 55 } 56 SwiperJSMenu.prototype = { 57 action: function() { 58 var ua = window.navigator.userAgent.toLowerCase(); 59 var safari = (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 60 var s = this; 61 var _ele = s.ele; 62 $(_ele).find('li').addClass(s.itemClass); // ele ë´ë¶ì liì ì¬ë¼ì´ë를 ìí í´ëì¤ ì¶ê° 63 $(_ele).find('ul').addClass(s.wrapClass); 64 $.each($(_ele+' li'), function(k, v) { 65 s._width += (safari?Math.ceil($(_ele+' li').eq(k).width()*1)+10:Math.ceil($(_ele+' li').eq(k).outerWidth(true)*1)); 66 }); // ì ì²´ í¬ê¸°ê° ê³ì° 67 $(_ele).find('ul').css({ 68 'width': s._width+this.active['margin_right'] 69 }); // ì ì²´ í¬ê¸°ë¥¼ ulì ì ì© 70 $(_ele).css({ 71 'overflow': 'hidden' 72 }); // eleì 기본 cssì ì© 73 if(s._width <= $(_ele).width()) { 74 if(s._swiper) { 75 s.destroy(); 76 return; 77 } 78 else { 79 s.destroy(); 80 return; 81 } 82 } 83 s._swiper = new Swiper(_ele, { 84 freeMode: true, 85 slidesPerView: 'auto', 86 spaceBetween: 0, 87 autoHeight: this.active['auto_height'], 88 speed: (s.active['speed'] == undefined?100:s.active['speed']), 89 wrapperClass: s.wrapClass, 90 slideClass: s.itemClass, 91 slidePrevClass: s.prevClass, 92 slideNextClass: s.nextClass, 93 slideActiveClass: s.activeClass 94 }); 95 s._swiper.updateSlidesSize(s._width+this.active['margin_right']); 96 s.moveUpdate(); 97 }, 98 destroy: function() { 99 var s = this; 100 var _ele = s.ele; 101 var ele = $(_ele); 102 103 // ììì 기본 í´ëì¤ ì ê±° 104 ele.removeClass('swiper-container-horizontal').removeClass('swiper-container-free-mode').removeClass('swiper-container-android').removeAttr('style'); 105
106 // ì¤ìì´í¼ë¥¼ ìí í´ëì¤ ì ê±° 107 if(ele.find('.'+s.wrapClass)) ele.find('.'+s.wrapClass).removeClass(s.wrapClass).removeAttr('style'); 108 if(ele.find('.'+s.itemClass)) ele.find('.'+s.itemClass).removeClass(s.itemClass); 109 if(ele.find('.'+s.wrapClass)) ele.find('.'+s.wrapClass).removeClass(s.wrapClass); 110 if(ele.find('.'+s.prevClass)) ele.find('.'+s.prevClass).removeClass(s.prevClass); 111 if(ele.find('.'+s.nextClass)) ele.find('.'+s.nextClass).removeClass(s.nextClass); 112 if(ele.find('.'+s.activeClass)) ele.find('.'+s.activeClass).removeClass(s.activeClass); 113 114 if(s._swiper) { 115 s._swiper.destroy(); 116 s._swiper = null; 117 } 118 }, 119 moveUpdate: function() { 120 var s = this; 121 var _ele = s.ele; 122 123 // activeë ììë¡ ì´ë 124 if($(_ele).find(s.active['hit_class']).length > 0) { 125 var scrollOffset = ($(_ele).find(s.active['hit_class'])[0].offsetLeft *-1)+($(window).width()/2)-($(_ele).find(s.active['hit_class']).width()/2); 126 if(scrollOffset > 0) scrollOffset = 0; 127 var residual = 0; // active기ì¤ì¼ë¡ ìì¬ width(activeì ì ë° í¬ê¸° í¬í¨) 128 $.each($(_ele+' li'), function(k, v) { // active기ì¤ì¼ë¡ ìì¬ width(activeì ì ë° í¬ê¸° í¬í¨) 129 if(k == $(_ele).find(s.active['hit_class']).index()) residual += ($(this).width()/2); 130 else if(k > $(_ele).find(s.active['hit_class']).index()) residual += $(this).width(); 131 }); 132 if(($(_ele).width()/2) > residual) scrollOffset = ($(_ele+' ul').width()-$(_ele).width())*-1; // active ììê° ì¤í¬ë¡¤ ê°ë¥ ìì ì´ìì¼ë¡ ì¤í¬ë¡¤ ëì§ ìëë¡ 133 if(s.active['position'] == 'left') { 134 s._swiper.slideTo($(_ele).find(s.active['hit_class']).index(), s.active['speed']); 135 scrollOffset = $(_ele).find(s.active['hit_class'])[0].offsetLeft*-1; 136 } 137 else { // activeìì를 ì ì¤ìì ë ¬ íë¤. 138 if(typeof s._swiper == 'object') { 139 s._swiper.setWrapperTransition(s.active['speed']); 140 s._swiper.setWrapperTranslate(scrollOffset); 141 } 142 } 143 this.residual_value = residual; 144 this.scrollOffset_value = scrollOffset; 145 } 146 else { return; } 147 }, 148 swiper: function() { 149 return this._swiper; 150 } 151 } 152 window.SwiperJSMenu = SwiperJSMenu; 153})(jQuery); 154 155/*=========================== 156Swiper AMD Export 157===========================*/ 158if (typeof(module) !== 'undefined') 159{ 160 module.exports = window.SwiperJSMenu; 161} 162else if (typeof define === 'function' && define.amd) { 163 define([], function () { 164 'use strict'; 165 return window.SwiperJSMenu; 166 }); 167}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.