[툴팁] 성능을 고려해서 jquery 와 자바스크립트를 잘 선택해서 사용해야합니다.
예를 들면 툴팁같은경우
jquery 를 쓰면 더 느리게 처리하는 경우가 있습니다.
그럴때는 순수 자바스크립트로만 툴팁을 적용하면 훨씬 빠른 효과를 얻을수있습니다.
// tooltip.js
[code]
var preview="";
var gobj="";
function attachEvent_(obj, evt, fuc, useCapture) {
if(!useCapture) useCapture=false;
if(obj.addEventListener) { // W3C DOM 지원 브라우저
return obj.addEventListener(evt,fuc,useCapture);
} else if(obj.attachEvent) { // MSDOM 지원 브라우저
return obj.attachEvent("on"+evt, fuc);
} else { // NN4 나 IE5mac 등 비 호환 브라우저
MyAttachEvent(obj, evt, fuc);
obj['on'+evt]=function() { MyFireEvent(obj,evt) };
}
}
function detachEvent_(obj, evt, fuc, useCapture) {
if(!useCapture) useCapture=false;
if(obj.removeEventListener) {
return obj.removeEventListener(evt,fuc,useCapture);
} else if(obj.detachEvent) {
return obj.detachEvent("on"+evt, fuc);
} else {
MyDetachEvent(obj, evt, fuc);
obj['on'+evt]=function() { MyFireEvent(obj,evt) };
}
}
function MyAttachEvent(obj, evt, fuc) {
if(!obj.myEvents) obj.myEvents= {};
if(!obj.myEvents[evt]) obj.myEvents[evt]=[];
var evts = obj.myEvents[evt];
evts[evts.length]=fuc;
}
function MyFireEvent(obj, evt) {
if(!obj.myEvents || !obj.myEvents[evt]) return;
var evts = obj.myEvents[evt];
for (var i=0;i<len;i++) {
len=evts.length;
evts[i]();
}
}
function previewShow(e, obj, pv) {
preview=pv;
gobj=obj;
attachEvent_(obj, "mousemove", previewMove, false);
attachEvent_(obj, "mouseout", previewHide, false);
}
function previewMove(e) {
var hb = document.getElementById(preview);
if(hb.parentElement) hb.parentElement.style.display="";
else hb.parentNode.style.display="";
var evt = e ? e : window.event;
var posx=0;
var posy=0;
if (evt.pageX || evt.pageY) { // pageX/Y 표준 검사
posx = evt.pageX +8;
posy = evt.pageY +16;
} else if (evt.clientX || evt.clientY) { //clientX/Y 표준 검사 Opera
posx = evt.clientX +10;
posy = evt.clientY +20;
if (window.event) { // IE 여부 검사
posx += document.body.scrollLeft;
posy += document.body.scrollTop;
}
}
hb.style.left = posx + "px";
hb.style.top = posy + "px";
}
function previewHide() {
var hb = document.getElementById(preview);
if(hb.parentElement) hb.parentElement.style.display="none";
else hb.parentNode.style.display="none";
detachEvent_(gobj,"mousemove", previewMove, false);
}
[/code]
// test.html
[code]
<script src="tooltip.js" type="text/javascript"></script>
<style type="text/css">
div.mouseView { width:150px; position:absolute; border:2px solid #ccc; font-size:12px; background-color:#fafafa; }
</style>
<a href="#" onmouseover="previewShow(event,this,'t_tip1');">마우스 오버</a>
<span style="display:none;">
<div id="t_tip1" class="mouseView">툴팁내용(HTML가능)</div>
</span>
[/code]
댓글 6개
글씨가 넘 작아영 ㅠ
게시글 목록
| 번호 | 제목 |
|---|---|
| 12413 | |
| 12412 | |
| 12411 |
JavaScript
실시간 카운트 다운 시계 입니다.
|
| 12410 |
jQuery
jQuery, 이미지맵 마우스오버시 하이라이트 표시
|
| 12407 | |
| 12406 | |
| 12405 | |
| 12404 |
JavaScript
한번만 submit 되게 하기 입니다.
|
| 12403 |
JavaScript
영문자나 숫자만 입력 할 수 있게 하기 입니다.
|
| 12402 |
JavaScript
현재 페이지 이메일로 보내는 버튼 만들기 입니다.
|
| 12401 |
JavaScript
모바일웹에서 PC버전 링크
|
| 12400 |
JavaScript
특정 파일형태만 업로드 하기 입니다.
|
| 12399 |
JavaScript
입력 문자열 앞에 붙는 공백 제거하기 입니다.
|
| 12398 |
JavaScript
키보드 방향키로 창의 위치를 이동시키기 입니다.
|
| 12397 | |
| 12396 | |
| 12395 |
JavaScript
키보드 눌러 이동하는 단축키 사용하기 입니다.
|
| 12394 |
JavaScript
책장을 넘기는 것같은 이미지 슬라이드 쇼 입니다.
|
| 12393 |
JavaScript
마우스를 대면 링크 이미지들을 보여주기 입니다.
|
| 12392 |
PHP
pushbullet 푸시 발송
|
| 12391 |
MySQL
같은 컬럼의 행들을 한번에 UPDATE 하기
|
| 12390 |
JavaScript
이미지들을 보여주는 풀다운 콤보메뉴 입니다.
|
| 12389 |
JavaScript
부드럽게 오버랩되는 이미지 슬라이드 쇼 입니다.
|
| 12388 |
JavaScript
끊김없이 연속적으로 스크롤 되는 이미지 스크롤러 입니다.
|
| 12387 |
PHP
php 주요 정리 입니다.
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기