PageSourceSearch

https://dino.singles/static/dinoportal/js/common-adjustheader.js?_=260929023659

js dino.singles collected 2026-10-05 10:29:13 UTC 4,770 bytes, 150 lines download raw bytes

1/* ヘッダ調整はできるだけ早く動かしたいので別置き */
2(function(){
3
4function adjustHeaders(){
5	
6	/* $(document).trigger('adjustheaderbg'); でヘッダ背景(メインエリア上パディング)の高さを調整する */
7	$(document)
8		.on('adjustheaderbg', function(){
9			
10			// console.log('adjustheaderbg');
11			
12			if ($('#header').is('.slide-up')) {
13				// いろいろなカスタムの組み合わせで、縮んだ時の高さが変わることがあるため、
14				// 縮んでいるときにはadjustしない。
15				return;
16			}
17			
18			var $t = $('#header-title'),
19				$r = $('#header-right:visible'),
20				$m = $('#header-menu:visible'),
21				$f = $('#footer:visible'),
22				rt = $t[0].getBoundingClientRect(),
23				rr = $r[0] && $r[0].getBoundingClientRect() || {height:rt.height},
24				rm = $m[0] && $m[0].getBoundingClientRect() || {height:0},
25				hh = (rr.top >= rt.bottom) ? (rr.bottom - rt.top) : (Math.max(rt.height, rr.height)),
26				hm = (rt.top == rm.top) ? 0 : rm.height,
27				ft = $f[0] && ($f[0].getBoundingClientRect() || {height:0}).height;
28			
29			$.setStyle([
30				'#header-bg, .spiral-header-bg { height:'+ hh +'px; }',
31				'#header-menu-bg { height:100vh; }',
32				'@media (max-width:767px) {',
33					'#header.slide-up #header-container {',
34						'transform:translateY(-' + hh + 'px);',
35					'}',
36				'}',
37				'@media (min-width:768px) {',
38					'body.custom-header-image-center #header.slide-up #header-container,',
39					'body.custom-header-menu-always-mobile #header.slide-up #header-container {',
40						'transform:translateY(-' + hh + 'px);',
41					'}',
42					'#main { padding-top:'+ (hh + (75-66) + 4) +'px; }', // common.css
43					'body.custom-header-image-center #main,',
44					'body.custom-header-menu-always-mobile #main {',
45						'padding-top:'+ (hh + hm + 4 + 6) +'px;',
46					'}',
47				'}',
48				'@media (max-width:767px) {',
49					'#main { padding-top:'+ (hh + hm + 4) +'px; }',
50				'}',
51				'#main { min-height:calc(100vh - '+ ft +'px); }',
52			].join('\n'), 'style-adjustheaderbg');
53			
54			// console.info('adjustheaderbg', $('#style-adjustheaderbg')[0]);
55		});
56	function triggerAdjustHeaderBg(){ $(document).trigger('adjustheaderbg'); }
57	triggerAdjustHeaderBg();
58	$('#header').imagesLoaded(triggerAdjustHeaderBg);
59	
60	
61	/* ヘッダメニューを畳む */
62	var w = 0;
63	function adjustHeaderMenus(){
64		var $h = $('#header-menu:visible'), hw = $h[0] && $h[0].clientWidth || 0;
65		if (!$h[0] || $h.children().length == 1) { return; }
66		if (w == hw) { return; }
67		w = hw;
68		
69		// justify-content に flex-end が指定されているとはみ出し判定ができない
70		$h.addClass('adjusting')
71			.css('overflow', 'hidden')
72			.css('justify-content','flex-start');
73		
74		restoreHeaderMenus();
75		
76		
77		if ($h[0].clientWidth >= $h[0].scrollWidth) {
78			$h.removeClass('adjusting')
79				.css('overflow', '')
80				.css('justify-content','');
81			return;
82		}
83		
84		var retry_limit = 100;
85		var $more = $('<span class="menu-more centeringchild inline"><a href="#"><span class="for-desktop">more </span><i class="fa fa-caret-down"></i></a><div class="menu-overflowed" style="display:none;"><div class="container"></div></div></span>');
86		var $more_items= $more.find('.menu-overflowed > .container');
87		
88		var $prevents = $h.find('.prevent-fold');
89		// .prevent-fold は more より右に出す
90		if ($prevents[0]) {
91			$h.append($prevents); // 最後に寄せる
92			$more.insertBefore($prevents[0]);
93		} else {
94			$h.append($more);
95		}
96		
97		while ($h[0].clientWidth < $h[0].scrollWidth) {
98			if (!(retry_limit--)) { break; }
99			var $prev = $more.prev(':not(.prevent-fold):not(:first-child)');
100			if (!$prev[0]) {
101				break;
102			}
103			$more_items.prepend($prev);
104		}
105		
106		$h.removeClass('adjusting')
107			.css('overflow', '')
108			.css('justify-content','');
109		
110	}
111	function restoreHeaderMenus(){
112		var $h = $('#header-menu:visible');
113		var $more = $h.children('.menu-more'), $more_contents = $more.find('.menu-overflowed > .container').children();
114		if ($more) {
115			$more.before($more_contents).remove();
116		}
117	}
118	
119	adjustHeaderMenus();
120	
121	$(document).on('click touchstart', '.menu-more > a', function(ev) {
122		ev.preventDefault();
123		$(this).next('.menu-overflowed').toggle();
124	});
125	
126	
127	$(window).on('resizing.adjustheader resized.adjustheader', function(){
128		triggerAdjustHeaderBg();
129		adjustHeaderMenus();
130	});
131	
132	$('#header').addClass('initialized');
133}
134
135if (window._customized === undefined) {
136	var _t = setInterval(function(){
137		if (window._customized !== undefined) {
138			clearInterval(_t);
139			adjustHeaders();
140			setTimeout(adjustHeaders, 1000); // 保険
141			setTimeout(adjustHeaders, 5000); // 保険
142		}
143	}, 25);
144} else {
145	adjustHeaders();
146	setTimeout(adjustHeaders, 1000); // 保険
147	setTimeout(adjustHeaders, 5000); // 保険
148}
149
150})();

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.