PageSourceSearch

https://mayonnaised.com/layouts/xet_moderne_signature/js/header.js?t=1788181453

js mayonnaised.com collected 2026-09-26 08:55:27 UTC 4,822 bytes, 186 lines download raw bytes

1(function ($) {
2	"use strict";
3
4	// Push Menu
5	$.fn.pushMenu = function (customOptions) {
6		var o = $.extend({}, $.fn.pushMenu.defaultOptions, customOptions);
7
8		// Back Layer 추가
9		$('<div id="js-push-nav-back" class="push-nav-back"></div>').appendTo('body');
10
11		var _body = $('body'),
12			_layout_body = $('#js-layout-body'),
13			_push_aside = $('#js-push-nav'),
14			_push_aside_back = $('#js-push-nav-back'),
15			_this = $(this);
16
17		// push body인 경우
18		if ($(this).is('.' + o.pushBodyClass)) {
19			_body.addClass(o.pushBodyClass);
20		}
21
22		var target = '',
23			push_direction = '';
24
25		// Determine menu and push direction
26		if ($(this).is('.' + o.showLeftClass)) {
27			target = '.menu-left';
28			push_direction = 'toright';
29		} else if ($(this).is('.' + o.showRightClass)) {
30			target = '.menu-right';
31			push_direction = 'toleft';
32		} else if ($(this).is('.' + o.showTopClass)) {
33			target = '.menu-top';
34		} else if ($(this).is('.' + o.showBottomClass)) {
35			target = '.menu-bottom';
36		} else if ($(this).is('.' + o.showFullClass)) {
37			target = '.menu-full';
38		}
39		if (target == '') {
40			return;
41		}
42
43		$(this).click(function (e) {
44			e.stopPropagation();
45
46			$(this).toggleClass(o.activeClass);
47			$(target).toggleClass(o.activeClass);
48			_body.toggleClass(o.activeClass);
49
50			// 터치스크롤 위치 리셋
51			_push_aside.scrollTop(0);
52
53			if ($(this).is('.' + o.pushBodyClass) && push_direction != '') {
54				_body.toggleClass(o.pushBodyClass + '-' + push_direction);
55			}
56
57			//_layout_body.css('opacity','0');
58
59			// Back Layer
60			_push_aside_back.fadeToggle(); // toggleClass는 사용시 레이어 뒤 버튼이 클릭 되는 문제있음
61
62			if ($(this).hasClass(o.activeClass)) {
63				// 터치스크롤방지
64				_layout_body.on('touchstart touchmove', function (e) {
65					e.preventDefault();
66					e.stopPropagation();
67					return false;
68				});
69			} else {
70				pushMenu.close(o);
71			}
72
73			return;
74		});
75
76		var pushMenu = {
77			close: function (o) {
78				_body.removeClass(o.activeClass + ' ' + o.pushBodyClass + '-toleft ' + o.pushBodyClass + '-toright');
79				$(target).removeClass(o.activeClass + ' ' + o.pushBodyClass + '-toleft ' + o.pushBodyClass + '-toright');
80				_this.removeClass(o.activeClass);
81
82				// Back Layer 삭제
83				_push_aside_back.fadeOut();
84
85				// 터치스크롤방지 해제
86				_layout_body.off('touchstart touchmove');
87
88			}
89		}
90
91		// Close menu on clicking outside menu
92		if (o.closeOnClickOutside) {
93			_push_aside_back.on('click touchstart', function () {
94				pushMenu.close(o);
95			});
96		}
97		// Close menu on clicking menu link
98		if (o.closeOnClickLink) {
99			_push_aside.find('.close-push-nav').on('click', function () {
100				pushMenu.close(o);
101			});
102		}
103	};
104	$.fn.pushMenu.defaultOptions = {
105		bodyClass: 'push',
106		activeClass: 'push-active',
107		showLeftClass: 'push-menu-left',
108		showRightClass: 'push-menu-right',
109		showTopClass: 'push-menu-top',
110		showBottomClass: 'push-menu-bottom',
111		showFullClass: 'push-menu-full',
112		pushBodyClass: 'push-body',
113		closeOnClickOutside: true,
114		closeOnClickLink: true
115	};
116
117	// 스크롤시 Header
118	function headerscroll() {
119		let header__fixed = $('#js-header-fixed');
120		let header__hight = header__fixed.outerHeight();
121		let lastScrollTop = 0;
122		let delta = 60;
123		let isScrolling = false;
124
125		$(window).on('scroll', function () {
126			isScrolling = true;
127		}).trigger('scroll');
128
129		function hasScrolled() {
130			let st = $(window).scrollTop();
131
132			if (Math.abs(lastScrollTop - st) <= delta) return;
133
134			if (st > lastScrollTop) {
135				header__fixed.removeClass('is-down').addClass('is-up');
136			} else {
137				if ((st + $(window).height()) < $(document).height()) {
138					header__fixed.removeClass('is-up').addClass('is-down');
139				}
140				if (st < delta) {
141					header__fixed.removeClass('is-down is-up');
142				}
143			}
144
145			lastScrollTop = st;
146		}
147
148		function scrollHandler() {
149			if (isScrolling) {
150				hasScrolled();
151				isScrolling = false;
152			}
153
154			requestAnimationFrame(scrollHandler);
155		}
156
157		scrollHandler();
158	}
159
160	$(document).ready(function () {
161
162		headerscroll();
163		$('[rel="js-gnb-toggle-btn"]').pushMenu();
164
165		// 모바일 메뉴 탭
166		let pushNavContainer = $('[rel="js-push-nav__container"]');
167		let pushNavList = pushNavContainer.find('.push-nav__list');
168		let pushNavListItems = pushNavList.find('li.child').children('a');
169		let pushNavListChilds = pushNavContainer.find('.push-nav__list-child>ul');
170		pushNavListItems.on('click', function () {
171			pushNavListChilds.hide();
172			pushNavList.find('a.is-active').removeClass('is-active');
173			$(this).addClass('is-active');
174			var tab_cont = $(this).data('tab');
175			$(tab_cont).fadeIn();
176			return false;
177		});
178		if (pushNavList.find('li a').hasClass('is-active')) {
179			pushNavList.find('li a.is-active').click();
180		} else {
181			pushNavList.find('li:first-child a').click();
182		}
183
184	});
185
186})(jQuery);

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.