HTML의 title
속성에 값을 넣으면 브라우저마다 다른 모양으로 출력되는데, 그게 꼴보기 싫기도 하고... 특히 커서를 올리고 난 뒤 1초 정도 지연된 후 툴팁이 뜨는 게 싫었다.
script
$('[title]').attr({ // title 속성 값을 data-title 이라는 사용자 속성에 넣음.
'data-title': function() {
return this.title;
},
'title': null // title 속성은 제거해야 브라우저 자체 툴팁이 안 나오겠지?
});
$('body').append('tooltip'); // 툴팁을 표시할 요소를 만듦. 원래는 CSS의 :before를 응용해서 만들까 했는데,
$('[data-title]').each(function(index) { // 위치정렬이랑 크기조절이 힘들어서 결국 스크립트로 만듦.
$('[data-title]:eq(' + index + ')').hover(function() {
$('#tooltip').text(function() {
return $('[data-title]:eq(' + index + ')').attr('data-title') // 까다로운 코딩구간도 개꿀 반복문인 each를 써서 개쉽게 문제 해결.
}).css({
'visibility': 'visible',
'opacity': 1,
'top': function() {
return $('[data-title]:eq(' + index + ')').offset().top - $(this).outerHeight() - 12 + 'px';
},
'left': function() {
return $('[data-title]:eq(' + index + ')').offset().left + ($('[data-title]:eq(' + index + ')').outerWidth() - $('#tooltip').outerWidth()) / 2 + 'px';
}
});
}, function() {
$('#tooltip').css({
'visibility': 'hidden',
'opacity': 0
});
});
});
css
/* 그리고 나머지 고정된 스타일은 CSS로 대충 만듦 */
#tooltip {
color: #fff;
position: absolute;
top: 0;
visibility: hidden;
opacity: 0;
background: #212121;
transition: 0.25s opacity;
z-index: 2;
padding: 1ex;
border-radius: 3px;
max-width: 400px;
}
#tooltip:before {
border-color: #212121 transparent transparent transparent;
border-width: 1ex 1ex 0 1ex;
border-style: solid;
content: " ";
position: absolute;
left: calc(50% - .5em);
bottom: -.9ex;
}
이 코드를 짠 장본인은 아름다운 툴팁의 모습에 감탄하여 감동의 눈물을 흘렸다고 한다. ( ← 여기에 마우스 커서를 올려보자 )
끝.
'기록 #01: 컴퓨터' 카테고리의 다른 글
안드로이드 토스트 위치 제어 (0) | 2016.04.19 |
---|---|
안드로이드 이미지뷰에 이미지 src 바꾸기 (1) | 2016.04.11 |
게시물 중앙에 애드센스 자동출력 (6) | 2015.08.15 |
페이지 내부 링크로 이동할 때 스크롤을 부드럽게 (5) | 2015.08.04 |
댓글달기 버튼에 동적 효과 추가 (9) | 2015.04.12 |
css 플립 카드 (1) | 2014.10.08 |
하드디스크 포맷기 (1) | 2013.05.25 |
모바일 웹앱 제작 후기 (0) | 2013.03.21 |
2015 수능 디데이 카운터 (1) | 2013.02.19 |
모스 부호(Morse code) 해석기 (67) | 2013.02.16 |