반응형
프로그램 소개: http://simulz.com/462

툴팁, 마우스 오버 효과




단계적 기능향상 기법을 적용하기 위해 툴팁과 마우스 오버 효과는 자바스크립트로 추가한다.
자바스크립트를 사용할 수 없는 환경에서는 적용되지 않는다.

var $tooltip = $('<div id="tooltip"></div>').appendTo('body');
<div id="tooltip"></div> 코드를 BODY 엘레멘트 내부의 뒷부분에 추가하고 객체를 $tooltip 변수에 저장한다.

var tPosX = event.pageX;
이벤트가 발생한 X 좌표를 tPosX 변수에 저장한다.
이벤트가 발생한 Y 좌표에 20을 더해 tPosY 변수에 저장한다. 클릭 지점에서 20px 밑에 툴팁이 표시된다.

$tooltip.css({top: tPosY, left: tPosX});
$tooltip 객체에 CSS를 추가한다.

툴팁은 마우스 포인터를 따라 다니므로 떠있어야 한다. 아래처럼 CSS를 만들어 놓는다.


$(this).addClass('hover');
마우스가 오버되면 포인터가 가리키는 객체에 hover 클래스를 추가한다.

var cctvName = $(this).text().replace(/\d+\./, '');
포인터가 가리키는 객체 중 .text() 메서드로 text만 가져온뒤 .replace() 메서드로 내용을 변환한다.
여기서는 정규표현식으로 "1개 이상의 숫자."으로 된 부분을 없앴다.

$tooltip.html('<b>' + cctvName + '</b> CCTV를 보기 목록에' + action + '합니다.').show();
툴팁에 표시될 문장을 결합하여 .html() 메서드로 HTML 출력을 한다.
그 다음 .show() 메서드로 숨겨진 툴팁을 화면에 표시한다.

positionTooltip(event);
마우스가 오버 중일 때 툴팁이 마우스를 따라다니도록 인자로 event를 넘겨 함수를 호출한다.

$(this).removeClass('hover');
포인터가 가리키는 객체에서 hover 클래스를 제거한다.

$tooltip.hide();
툴팁 객체를 숨긴다. style 속성이 display:hidden 으로 설정된다.

$('#list div').hover(mouseOver, mouseOut).mousemove(positionTooltip);
CCTV 목록에서만 툴팁이 보여야 하므로 selector를 #list div로 설정한다.
.hover() 메서드로 마우스 오버일 때 호출할 함수, 마우스 아웃일 때 호출할 함수를 지정한다.
.mousemove() 메서드로 포인터가 움직이는 동안 positionTooltip 함수를 호출한다.
반응형

관련글