PageSourceSearch

https://kdischool.ac.kr/www/js/layout.js

js kdischool.ac.kr collected 2026-10-01 10:42:17 UTC 11,583 bytes, 357 lines download raw bytes

1/*-------------------------------------------------
2title       : 레이아웃
3Author      : 플랜아이 광주
4Create date : 2020-02-14
5-------------------------------------------------*/
6
7$(function () {
8  // 사이트바로가기
9  $('.hnb1').classtoggle({
10    'button': '.label', // 이벤트 받을 타겟 선택
11    'respond': true, // 반응형일 때 (true 시 반응형일때 가로 사이즈 이하에서만 / click 일때만)
12    'respondWidth': '1024', // 반응형 가로 사이즈
13  });
14
15  // 언어
16  $('.lang').classtoggle({
17    'button': '.active' // 이벤트 받을 타겟 선택
18  });
19
20  // 검색어
21  // $('.search').classtoggle();
22  $('.search .control.open').click(function () {
23    $('#header, .search').addClass('active');
24    $('#gnb1 > ul > li').removeClass('active');
25    $('#gnb1').addClass('active')
26    return false;
27  });
28  $('.search .control.close').click(function () {
29    $('#header, .search').removeClass('active');
30    $('#gnb1').removeClass('active')
31    return false;
32  });
33
34  // 주메뉴
35  $('#gnb1').gnb1();
36
37  // 전체메뉴이자 모바일 메뉴
38  //$('#gnb2').gnb2();
39  $('#gnb2 .control.open').click(function () {
40    $('#header').addClass('all');
41    $('#gnb2').addClass('active');
42    return false;
43  });
44  $('#gnb2 .control.close').click(function () {
45    $('#header').removeClass('all');
46    $('#gnb2').removeClass('active');
47    return false;
48  });
49  $('#gnb2 li div').parent('li').addClass('plus');
50  $('#gnb2 .plus > a').attr('href', '#none');
51  $('#gnb2 .submenu div ul').after('<a href="#none" class="back"><i class="ri-arrow-left-line"></i><span>back</span></a>');
52  $('#gnb2 .submenu .plus > a').click(function () {
53    var tit = $(this).text();
54    $(this).next().children('ul').before('<h2>' + tit + '</h2>');
55    return false;
56  });
57  $('#gnb2 .plus > a').click(function () {
58    $(this).parent('li').toggleClass('active').siblings().removeClass('active');
59    return false;
60  });
61  $('#gnb2 .back').click(function () {
62    $(this).parents('li.active').removeClass('active');
63    return false;
64  });
65
66  // 퀵메뉴
67  $('.quick').classtoggle({
68    'button': 'button', // 이벤트 받을 타겟 선택
69    'class': 'active' // 추가할 클래스명 (target에 추가됨)
70  });
71  $('.information .group').classtoggle({
72    'button': 'button', // 이벤트 받을 타겟 선택
73    'class': 'active' // 추가할 클래스명 (target에 추가됨)
74  });
75
76  // 위로가기 활성화
77  $(window).on('scroll load', function () {
78    if ($('html, body').scrollTop() > 300) {
79      $('#footer .btn_top').addClass('active');
80    } else {
81      $('#footer .btn_top').removeClass('active');
82    }
83  });
84
85  // 위로가기
86  $('#footer .btn_top').on('click', function () {
87    $('html, body').animate({
88      scrollTop: $(this.hash).offset().top
89    });
90
91    $(this.hash).focus();
92
93    return false;
94  });
95
96
97  $("a[target='_blank']").attr({
98    "title": "Open with a new window",
99    "rel": "noopener noreferrer"
100  })
101
102});
103
104/*-------------------------------------------------
105title       : 메뉴1
106Author      : 플랜아이 광주
107Create date : 2020-02-14
108-------------------------------------------------*/
109
110$.fn.gnb1 = function (options) {
111  var settings = $.extend({
112      'actionType': 'mouseenter focusin', // 메뉴가 동작하는 액션 (mouseenter focusin, click)
113      'target': '#header', // 활성화 시 클래스가 추가되는 요소 (공란일 경우 오버되는 a 링크 부모 li에만 í
113´ëž˜ìФ 추가됨)        
114      'class': 'active', // 추가할 클래스명 (target에 추가됨)
115      'depth2': '.submenu', // 서브메뉴
116      'closeBtn': '.close' // 닫기 버튼이 별도로 존재하는 경우 (닫기 버튼은 클릭시에만)
117    },
118    options);
119
120  return this.each(function () {
121    var $selecter = $(this);
122
123    $selecter.find('a').on(settings.actionType, function () {
124      if ($(this).parent('li').hasClass('active') == false) {
125        $(this).parent('li').addClass('active');
126        $(this).parent('li').siblings('li').removeClass('active');
127
128        $(this).parents('li').addClass('active');
129        $(this).parents('li').siblings('li').removeClass('active');
130
131        if (settings.target != '') {
132          $(settings.target).addClass(settings.class);
133        }
134      }
135
136      if (settings.actionType == 'click') {
137        if ($(this).next('*').length > 0) {
138          return false;
139        }
140      }
141    });
142
143    if ($selecter.find(settings.closeBtn).length == 1) {
144      $selecter.find(settings.closeBtn).on('click', function () {
145        $selecter.find('li').removeClass(settings.class);
146        $(settings.target).removeClass(settings.class);
147
148        return false;
149      });
150    } else {
151      // 마우스 아웃
152      /*$(document).on('mousemove', function (e) {
153        cursorY = e.pageY;
154
155        if ($selecter.find('li.active').length > 0) {
156          if (cursorY > parseInt($selecter.find(settings.depth2).offset().top + $selecter.find('.active').find(settings.depth2).height())) {
157            setTimeout(function () {
158              $selecter.find('li').removeClass(settings.class);
159              $(settings.target).removeClass(settings.class);
160
161            }, 200);
162          }
163        }
164      });*/
165    	$selecter.find(settings.depth2).on('mouseleave', function () {
166    		  $selecter.find('li').removeClass(settings.class);
167    		  $(settings.target).removeClass(settings.class);
168    		});
169
170    }
171
172    // 탭 아웃
173    $selecter.find('a:last').keydown(function (e) {
174      if (e.keyCode === 9) {
175        $selecter.find('li').removeClass(settings.class);
176        $(settings.target).removeClass(settings.class);
177      }
178    });
179
180    // 역탭 아웃
181    $selecter.find('a:first').keydown(function (e) {
182      if (e.keyCode === 9 && e.shiftKey) {
183        $selecter.find('li').removeClass(settings.class);
184        $selecter.removeClass(settings.classname);
185      }
186    });
187  });
188};
189
190/*-------------------------------------------------
191title       : 메뉴2
192Author      : 플랜아이 광주
193Create date : 2020-02-14
194-------------------------------------------------*/
195
196$.fn.gnb2 = function (options) {
197  var settings = $.extend({
198      'btnOpen': '.open', // 최초 메뉴를 여는 버튼
199      'btnClose': '.close', // 닫기 버튼이 별도로 존재하는 경우
200      'classAdd': '#gnb2', // 활성화 시 클래스가 추가되는 요소
201      'className': 'active', // 추가할 클래스명 (classAdd에 추가됨)
202      'siblings': true, // active 될 때 형제요소의 반응 여부
203      'responsive': true, // 반응형일 때 (true 시 반응형일때 가로 사이즈 이하에서만 / false 시 반응형 아닐 때도 클릭 동작함)
204      'responsiveWidth': '1024' // 반응형 가로 사이즈
205    },
206    options);
207
208  return this.each(function () {
209    var $selecter = $(this);
210
211    // 열기
212    $selecter.find(settings.btnOpen).on('click', function () {
213      if ($selecter.find(settings.btnClose).length > 0) {
214        $(settings.classAdd).addClass(settings.className);
215      } else {
216        if ($(settings.classAdd).hasClass(settings.className) == false) {
217          $(settings.classAdd).addClass(settings.className);
218        } else {
219          $(settings.classAdd).removeClass(settings.className);
220        }
221      }
222
223      return false;
224    });
225
226    // 닫기
227    if ($selecter.find(settings.btnClose).length > 0) {
228      $selecter.find(settings.btnClose).on('click', function () {
229        $(settings.classAdd).removeClass(settings.className);
230
231        return false;
232      });
233    };
234
235    // 메뉴 클릭 이벤트
236    function menuAction($this) {
237      if ($this.next('*').length > 0 && $this.next('*').css('display') != 'none') {
238        if ($this.parent('li').hasClass('active') == false) {
239          $this.parent('li').addClass('active');
240
241          if (settings.siblings == true) {
242            $this.parent('li').siblings('li').removeClass('active');
243          }
244        } else {
245          $this.parent('li').removeClass('active');
246        }
247
248        event.preventDefault();
249      }
250    }
251
252    // 메뉴
253    $selecter.find('li a').on('click', function (e) {
254      if (settings.responsive == true) {
255        if ($(window).width() <= settings.responsiveWidth) {
256          menuAction($(this));
257        }
258      } else {
259        menuAction($(this));
260      }
261    });
262  });
263};
264
265/*-------------------------------------------------
266title       : 클래스를 넣고 빼고
267Author      : 플랜아이 광주
268Create date : 2020-02-14
269-------------------------------------------------*/
270
271$.fn.classtoggle = function (options) {
272  var settings = $.extend({
273      'button': '.open', // 이벤트 받을 타겟 선택
274      'action': 'click', // 액션 선택 (click | over)
275      'classname': 'active', // 추가할 클래스명
276      'accordion': false, // active 될 때 형제요소의 반응 여부
277      'respond': false, // 반응형일 때 (true 시 반응형일때 가로 사이즈 이하에서만 / click 일때만)
278      'respondWidth': '768', // 반응형 가로 사이즈
279      'close': '.close' // 닫기 버튼이 별도로 존재하는 경우 (닫기 버튼은 클릭시에만)
280    },
281    options);
282
283  return this.each(function () {
284    var $selecter = $(this);
285
286    function clickActive() {
287      if ($selecter.hasClass(settings.classname) == false) {
288        $selecter.addClass(settings.classname);
289
290        if (settings.accordion == true) {
291          $selecter.siblings().removeClass(settings.classname);
292        }
293      } else {
294        // 닫기 버튼 존재할 경우 토글되지 않음
295        if ($selecter.find(settings.close).length == 0) {
296          $selecter.removeClass(settings.classname);
297        }
298      }
299    }
300
301    if (settings.action == 'click') {
302      $selecter.find(settings.button).on(settings.action, function () {
303        if (settings.respond == false) {
304          clickActive();
305
306          return false;
307        } else {
308          if ($(window).width() <= settings.respondWidth) {
309            clickActive();
310
311            return false;
312          } else {
313            $selecter.find(settings.button).off();
314          }
315        }
316      });
317    } else {
318      $selecter.find(settings.button).on({
319        mouseenter: function () {
320          $selecter.addClass(settings.classname);
321        },
322        focusin: function () {
323          $selecter.addClass(settings.classname);
324        },
325        mouseleave: function () {
326          $selecter.removeClass(settings.classname);
327        },
328        focusout: function () {
329          $selecter.removeClass(settings.classname);
330        }
331      });
332    }
333
334    // 닫기 버튼이 별도로 존재하는 경우
335    if ($selecter.find(settings.close).length > 0) {
336      $selecter.find(settings.close).on('click', function () {
337        $selecter.removeClass(settings.classname);
338
339        return false;
340      });
341    } else {
342      // 탭 아웃
343      $selecter.find('a:last').keydown(function (e) {
344        if (e.keyCode === 9) {
345          $selecter.removeClass(settings.classname);
346        }
347      });
348
349      // 역탭 아웃
350      $selecter.find('a:first').keydown(function (e) {
351        if (e.keyCode === 9 && e.shiftKey) {
352          $selecter.removeClass(settings.classname);
353        }
354      });
355    }
356  });
357};

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.