Á¦ÀÌÄõ¸® Ç÷¯±×ÀÎ ¸¸µé±â (jQuery Plugin)
Á¦ÀÌÄõ¸®(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: 5004: };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: 5006: };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 [Àý´ë·Î °í°³¸¦ ¶³±¸Áö ¸»¶ó. °í°³¸¦ Ä¡Äѵé°í ¼¼»óÀ» ¶È¹Ù·Î ¹Ù¶óº¸¶ó.]