JavaScript Custom Tooltip Sederhana

Pure JavaScript Custom Tooltip for all Anchor Tag!

by Ahmad Najiullah

HTML

<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-4qIdoGJ-pP8/UppE4sVioxI/AAAAAAAAAaQ/TT75QDFe_Bs/s1600/Lambang+Nomor+Telepon+Penting+Kotaserang.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Lambang Nomor Telepon Penting Kotaserang" border="0" src="http://3.bp.blogspot.com/-4qIdoGJ-pP8/UppE4sVioxI/AAAAAAAAAaQ/TT75QDFe_Bs/s1600/Lambang+Nomor+Telepon+Penting+Kotaserang.png" title="Lambang Nomor Telepon Penting Kotaserang" /></a></div><a href="#" title="Tadaaa!!!">Heps!</a> lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat <a href="#" title="Hahay... yeeeyyyyyyy.... AlalalaaaaAAAAA!!!!! Hmph.">ack!</a> Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit <a href="http://goo.gl/jAX6N" title="Brottt!!!!">amet</a>, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna <a href="#">no title attribute</a> aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat <a href="#" title="GROOOAAAGGGHHHH!!!">link</a>

CSS

body {padding:50px;}

#tt {
    -webkit-transition:all 0.4s ease-out;
    -moz-transition:all 0.4s ease-out;
    -ms-transition:all 0.4s ease-out;
    -o-transition:all 0.4s ease-out;
    transition:all 0.4s ease-out;
}

JavaScript

// Pure JavaScript Custom Tooltip for all Anchor Tag
// https://plus.google.com/108949996304093815163/about
(function() {

    var a = document.getElementsByTagName('a');
    var t = document.createElement('span');
        t.id = "tt";
        t.style.position = "absolute";
        t.style.zIndex = 999;
        t.style.backgroundColor = "#FFE13F";
        t.style.border = "1px solid #BC5F05";
        t.style.font = "bold 11px Tahoma,Arial,Sans-Serif";
        t.style.boxShadow = "0 1px 3px rgba(0,0,0,0.4)";
        t.style.padding = "5px 10px";
        t.style.color = "#000";
        t.style.maxWidth = "170px";
        t.style.wordWrap = "break-word";
        t.style.visibility = "hidden";
        t.style.opacity = 0;
    document.body.appendChild(t);
    var tooltip = document.getElementById('tt');

    function over(e) {
        tooltip.style.visibility = "visible";
        tooltip.style.opacity = 1;
        tooltip.innerHTML = this.title;
        tooltip.style.top = (e.pageY + 25) + 'px';
        tooltip.style.left = e.pageX + 'px';
        this.setAttribute('original', this.title);
        this.title = "";

    }

    function out() {
        tooltip.innerHTML = "";
        tooltip.style.visibility = "hidden";
        tooltip.style.opacity = 0;
        this.title = this.getAttribute('original');
        this.removeAttribute('original');
    }

    for (var i = 0; i < a.length; i++) {
        if (a[i].title) {
            a[i].onmouseover = over;
            a[i].onmouseout = out;
        }
    }

})();