본문으로 이동

미디어위키:Common.js: 두 판 사이의 차이

Langrisser Wiki
DOMContentLoaded 타이밍 버그 수정: site JS는 이미 로드된 뒤라 해당 이벤트가 지나가버려 리스너가 전혀 등록 안 됐음 -> jQuery ready로 전환
스킬 호버 시 상세 정보 툴팁 표시(position:fixed로 mainsection-box의 overflow:hidden 회피)
31번째 줄: 31번째 줄:
} );
} );
}
}
// 스킬 그리드 호버 툴팁(레퍼런스 사이트 스타일)
var skillSlots = document.querySelectorAll( '.mainsection-slot-skill' );
skillSlots.forEach( function ( slot ) {
var tooltip = slot.querySelector( '.skill-tooltip' );
if ( !tooltip ) {
return;
}
slot.addEventListener( 'mouseenter', function () {
tooltip.style.display = 'block';
var rect = slot.getBoundingClientRect();
var top = rect.bottom + 8;
var left = rect.left + rect.width / 2 - tooltip.offsetWidth / 2;
var maxLeft = window.innerWidth - tooltip.offsetWidth - 8;
if ( left > maxLeft ) {
left = maxLeft;
}
if ( left < 8 ) {
left = 8;
}
if ( top + tooltip.offsetHeight > window.innerHeight - 8 ) {
top = rect.top - tooltip.offsetHeight - 8;
}
tooltip.style.top = top + 'px';
tooltip.style.left = left + 'px';
} );
slot.addEventListener( 'mouseleave', function () {
tooltip.style.display = 'none';
} );
} );
} );
} );

2026년 7월 14일 (화) 11:03 판

/* 대문 mainsection 그리드 등급 탭 필터링 */
$( function () {
	var tabLists = document.querySelectorAll( '.mainsection-tabs' );
	for ( var i = 0; i < tabLists.length; i++ ) {
		var tabs = tabLists[ i ];
		if ( !tabs.children.length ) {
			continue;
		}
		var box = tabs.closest( '.mainsection-box' );
		if ( !box ) {
			continue;
		}
		var items = tabs.querySelectorAll( 'li' );
		items.forEach( function ( li ) {
			li.addEventListener( 'click', function () {
				items.forEach( function ( other ) {
					other.classList.remove( 'active' );
				} );
				li.classList.add( 'active' );

				var rarity = li.getAttribute( 'data-rarity' );
				var slots = box.querySelectorAll( '.mainsection-slot[data-rarity]' );
				slots.forEach( function ( slot ) {
					if ( rarity === 'all' || slot.getAttribute( 'data-rarity' ) === rarity ) {
						slot.style.display = '';
					} else {
						slot.style.display = 'none';
					}
				} );
			} );
		} );
	}

	// 스킬 그리드 호버 툴팁(레퍼런스 사이트 스타일)
	var skillSlots = document.querySelectorAll( '.mainsection-slot-skill' );
	skillSlots.forEach( function ( slot ) {
		var tooltip = slot.querySelector( '.skill-tooltip' );
		if ( !tooltip ) {
			return;
		}
		slot.addEventListener( 'mouseenter', function () {
			tooltip.style.display = 'block';
			var rect = slot.getBoundingClientRect();
			var top = rect.bottom + 8;
			var left = rect.left + rect.width / 2 - tooltip.offsetWidth / 2;
			var maxLeft = window.innerWidth - tooltip.offsetWidth - 8;
			if ( left > maxLeft ) {
				left = maxLeft;
			}
			if ( left < 8 ) {
				left = 8;
			}
			if ( top + tooltip.offsetHeight > window.innerHeight - 8 ) {
				top = rect.top - tooltip.offsetHeight - 8;
			}
			tooltip.style.top = top + 'px';
			tooltip.style.left = left + 'px';
		} );
		slot.addEventListener( 'mouseleave', function () {
			tooltip.style.display = 'none';
		} );
	} );
} );