JavaScript È°¿ëÆÁ
2017.04.19 / 09:26

Á¦ÀÌÄõ¸® Ç÷¯±×ÀÎ ¸¸µé±â (jQuery Plugin)

1pips
Ãßõ ¼ö 174

Á¦ÀÌÄõ¸®(jQuery)¸¦ ÀÌ¿ëÇÏ¿© ³ª¸¸ÀÇ Custom PluginÀ» ¸¸µé¾î º¾½Ã´Ù.

¾ÆÁÖ ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î ¸¸µé ¼ö ÀÖÁö¸¸ ±âº»ÀûÀ¸·Î ¤°í ³Ñ¾î°¡¾ßÇÒ ºÎºÐ.

±×¸®°í °øÅëÀûÀ¸·Î »ç¿ëµÇ´Â ºÎºÐµé¿¡ ´ëÇؼ­ À̾߱â Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù.


¾Æ·¡ CSS¿Í HTML Äڵ带 °¡Áö°íÀÖ´Â °´Ã¼¿¡ ´ëÇؼ­ ½½¶óÀ̵å¼î ±â´ÉÀ» Áö¿øÇÏ´Â Ç÷¯±×ÀÎÀ» ¸¸µé¾î º¸°Ú½À´Ï´Ù.


   1:  <style>
   2:          #slideshow img
   3:          {
   4:              display: none;
   5:              position: absolute;
   6:              width:300px;
   7:              height:300px;
   8:          }

   9: </style>


   1:    <div id="slideshow">
   2:                  <img src="1.png" alt="JavaScript" />
   3:                  <img src="2.png" alt="CSS" />
   4:                  <img src="3.png" alt="JS" />
   5:                  <img src="4.png" alt="JAVA" />

   6:    </div>


div ÄÁÅ×ÀÌ³Ê °´Ã¼¿¡ ÀÖ´Â 4°³ÀÇ À̹ÌÁö¸¦ ½½¶óÀ̵å ÇÏ´Â ±â´ÉÀ» ±¸¼ºÇØ º¾´Ï´Ù.

¸ÕÀú DOM ELEMENT ¿¡ ¹ÝÀÀÇÏ´Â °øÅë ÇÔ¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¿©±â¼­´Â mySlide ¶ó°í Á¤ÀÇÇÏ°Ú½À´Ï´Ù.


mySlide.js ÆÄÀÏÀ» »ý¼ºÇÏ°í ¾Æ·¡¿Í°°ÀÌ Äڵ带 ÀÔ·ÂÇϸé DOM ELEMENT ¿¡ ¹ÝÀÀÇÏ´Â À̺¥Æ®°¡ ¸¸µé¾îÁý´Ï´Ù.

$("#slideshow").mySlide(); ¸¦ ÀÔ·ÂÇÏ¸é ¾Æ·¡ function À¸·Î À̺¥Æ®°¡ ¹ß»ý


   1:  (function () { 
   2:      $.fn.mySlide = function (options) {
   3:       
   4:      };
   5:  })(jQuery);


ÀÚ ±×·¯¸é ¿©±â¼­ Áß¿äÇÑ ºÎºÐ Á¦ÀÌÄõ¸®¿¡´Â $.extend ¶ó´Â À̺¥Æ® ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.

µÎ°³ ÀÌ»óÀÇ °´Ã¼¸¦ ÇÕÄ¡´Â ±â´ÉÀ» °¡Áö°í Àִµ¥ »ç¿ëÀÚ Ç÷¯±×ÀÎÀ» ¸¸µé¶§ ²À ÇÊ¿äÇÑ ¼Ó¼ºÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ ±â´ÉÀº jquery ȨÆäÀÌÁö¸¦ ÂüÁ¶ÇÏ°í,

´ÙÀ½ ±â´ÉÀ¸·Î ÁøÇàÇÏ°Ú½À´Ï´Ù.


½½¶óÀÌµå ¼î¸¦ ÁøÇàÇϱâ À§Çؼ­ ÇÊ¿äÇÑ ÀÎÀÚ°ªÀ» defaults ¶ó´Â º¯¼ö¿¡ ´ã½À´Ï´Ù.

±×¸®°í ÇÏ´Ü¿¡ $.extned ¸¦ º¸¸é mySlide ÇÔ¼ö¸¦ ¼±¾ðÇßÀ»¶§ ÆĶó¹ÌÅÍ·Î µé¾î¿À´Â option °ªÀ» ³Ö¾îÁִµ¥,

ÀÌ´Â °ð mySlide()¸¦ È£ÃâÇϸé defaults °ªÀ¸·Î »ç¿ëÇÏ°í, ÀÎÀÚ°ªÀÌ ÀÖÀ¸¸é ±× ÀÎÀÚ°ª(options)À¸·Î »ç¿ëÇ϶ó´Â ÀǹÌÀÔ´Ï´Ù.



   1:  var defaults = {
   2:              DELAY: 2000,
   3:              FADE_SPEED: 500 
   4:          };
   5:   
   6:  var options = $.extend({}, defaults, options);



ÀÚ ±×·¯¸é Áغñ´Â ´ÙµÆ°í ÀÌÁ¦ ½½¶óÀ̵å¼î¸¦ ÁøÇàÇÏ´Â Äڵ带 Â¥º¸¸é ¾Æ·¡¿Í°°½À´Ï´Ù. (°£´ÜÇؼ­ ¼³¸íÀº Æнº..)

   1:          var element = $(this);
   2:          var image = element.children('img');
   3:          var count = image.length;
   4:   
   5:          var i = 0;
   6:   
   7:          // ù¹ø° À̹ÌÁö È°¼ºÈ­
   8:          image.eq(0).show();
   9:   
  10:           
  11:          // À̹ÌÁö ½½¶óÀ̵å ŸÀ̸Ó
  12:          var interval = setInterval(function () {
  13:              image.eq(i).fadeOut(options.FADE_SPEED);
  14:              i = (i + 1 == count) ? 0 : i + 1;
  15:              image.eq(i).fadeIn(options.FADE_SPEED);
  16:          }, options.DELAY);



HTML ÆäÀÌÁö¿¡¼­ ÀÌÁ¦ ³»°¡ ¸¸µç mySlide¸¦ È£ÃâÇØ º¼±î¿ä?


   1:     <script>
   2:          $(document).ready(function () {
   3:              $('#slideshow').mySlide({
   4:                  DELAY: 1000,
   5:                  FADE_SPEED: 500 
   6:              });
   7:          }); 
   8:      </script>


ÀÌ·¸°Ô ÇÏ¸é °¢ À̹ÌÁöµéÀÌ 2ÃÊ¿¡ Çѹø¾¿ ½½¶óÀÌµå µË´Ï´Ù.

¿©±â¼­ ÆĶó¹ÌÅ͸¦ Àü´ÞÇÏÁö ¾Ê°í $('#slideshow').mySlide(); ¸¦ Çϸé À§¿¡¼­ ¼³¸íÇÑ $.extend ¿¡ defaults °ªÀÌ Àû¿ëÀÌ µÇ°í,

À§¿¡ ÄÚµåó·³ ÀÎÀÚ°ªÀ» ³Ñ±â¸é À§¿¡ ÀÎÀÚ°ª(1ÃÊ)À¸·Î Àû¿ëµË´Ï´Ù.


±×³É ³¡³»±ä ¾Æ½¬¿ì´Ï À̺¥Æ®¸¦ °°ÀÌ Çѹø ³Ö¾îº¸µµ·Ï ÇÏÁÒ.


mySlide.js ÆÄÀÏ¿¡ ¾Æ·¡ Äڵ带 Ãß°¡ÇÕ´Ï´Ù.


HTML ÆäÀÌÁö¿¡¼­ °¢ À̹ÌÁö¸¦ Ŭ¸¯ÇÒ¶§¸¶´Ù ÇØ´ç Á¤º¸¸¦ ¸®ÅÏÇØÁÖ´Â ÇÔ¼ö¸¦ »ý¼ºÇÕ´Ï´Ù.


$.extend ·Î Á¤ÀÇµÈ options.³ëÃâ½ÃųÇÔ¼ö¸í.call(ÀÚ±âÀÚ½Å, º¸³¾ÀÎÀÚ°ª1, º¸³¾ÀÎÀÚ°ª2, º¸³¾ÀÎÀÚ°ª3)



   1:    // MOUSE_CLICK ³ëÃâ
   2:          $(image).on("click", function(evnet){            
   3:              options.MOUSE_CLICK.call(this, this, event.clientX, event.clientY);
   4:      })


´Ù½Ã HTML ÆÄÀÏ·Î µ¹¾Æ°¡¼­ mySldie¸¦ ¾Æ·¡¿Í °°ÀÌ È£ÃâÇغ¸¸é 

À§¿¡¼­ Á¤ÀÇÇÑ À̺¥Æ®¿Í ÇÔ²² ÆĶó¹ÌÅ͸¦ Àü´Þ¹Þ½À´Ï´Ù.


   1:      <script>
   2:          $(document).ready(function () {
   3:              $('#slideshow').mySlide({
   4:                  DELAY: 2000,
   5:                  FADE_SPEED: 500,
   6:                  MOUSE_CLICK: function (item, x, y) {
   7:                      var element = $(item).attr("alt");
   8:                      alert(element + "\n" + "X : " + x + "   Y : " + y);
   9:                  }
  10:              });
  11:          }); 
  12:      </script>


½ÇÇàÇغ¸¸é °¢°¢ÀÇ À̹ÌÁöÀÇ alt ¸í, Ŭ¸¯ÇÑ X, Y ÁÂÇ¥¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ·± ±¸Á¶·Î ±â´ÉÀ» Ãß°¡ÇÏ´Ùº¸¸é ÈǸ¢ÇÑ ³ª¸¸ÀÇ Á¦ÀÌÄõ¸® Ç÷¯±×ÀÎÀ»(jquery plugin) ¸¸µé ¼ö ÀÖ½À´Ï´Ù.




¾Æ·¡ Ç®¼Ò½º ÀÔ´Ï´Ù.


HTML

1:   
   2:  <!DOCTYPE html>
   3:   
   4:  <html xmlns="http://www.w3.org/1999/xhtml">
   5:  <head>
   6:  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
   7:      <title></title>
   8:         <script type="text/javascript" src="jquery-2.1.1.min.js"></script>
   9:         <script type="text/javascript" src="mySlide.js"></script>
  10:          
  11:      <script>
  12:          $(document).ready(function () {
  13:              $('#slideshow').mySlide({
  14:                  DELAY: 2000,
  15:                  FADE_SPEED: 500,

16: MOUSE_CLICK: function (item, x, y) {

  17:                      var element = $(item).attr("alt");
  18:                      alert(element + "\n" + "X : " + x + "   Y : " + y);
  19:                  }
  20:              });
  21:          }); 
  22:      </script>
  23:      <style>
  24:          #slideshow img
  25:          {
  26:              display: none;
  27:              position: absolute;
  28:              width:300px;
  29:              height:300px;
  30:          }
  31:       </style>
  32:   
  33:  </head>
  34:  <body>
  35:      <form>
  36:      <div>
  37:              <div id="slideshow">
  38:                  <img src="1.png" alt="JavaScript" />
  39:                  <img src="2.png" alt="CSS" />
  40:                  <img src="3.png" alt="JS" />
  41:                  <img src="4.png" alt="JAVA" />
  42:              </div>
  43:      </div>
  44:      </form>
  45:  </body>
  46:  </html>

mySlide.js

   2:      $.fn.mySlide = function (options) {
   3:          var defaults = {
   4:              DELAY: 2000,
   5:              FADE_SPEED: 500 
   6:          };
   7:   
   8:          var options = $.extend({}, defaults, options);
   9:   
  10:          var element = $(this);
  11:          var image = element.children('img');
  12:          var count = image.length;
  13:   
  14:          var i = 0;
  15:   
  16:          // ù¹ø° À̹ÌÁö È°¼ºÈ­
  17:          image.eq(0).show();
  18:   
  19:          // MOUSE_CLICK ³ëÃâ
  20:          $(image).on("click", function(evnet){            
  21:              options.MOUSE_CLICK.call(this, this, event.clientX, event.clientY);
  22:          })
  23:          
  24:   
  25:          // À̹ÌÁö ½½¶óÀ̵å ŸÀ̸Ó
  26:          var interval = setInterval(function () {
  27:              image.eq(i).fadeOut(options.FADE_SPEED);
  28:              i = (i + 1 == count) ? 0 : i + 1;
  29:              image.eq(i).fadeIn(options.FADE_SPEED);
  30:          }, options.DELAY);
  31:      };
  32:  })(jQuery);



Ãâó: http://dotweb.tistory.com/216 [Àý´ë·Î °í°³¸¦ ¶³±¸Áö ¸»¶ó. °í°³¸¦ Ä¡Äѵé°í ¼¼»óÀ» ¶È¹Ù·Î ¹Ù¶óº¸¶ó.]