Positionned tooltip

Shows how to create a tooltip around an arbitrarily defined rectangle in the page.

by psoares

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/resources/dojo.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dijit/themes/claro/claro.css">
<div class="fakeRectangle">Mouse hover me
</div>

<div id="tooltip">
    <div>
        <div id="closeBtn">X</div>
        <a href="http://www.google.com" target=_blank>Google</a>
    </div>           
</div>

CSS

.fakeRectangle {
    position : absolute;
    left : 200px;
    top : 200px;
    border : 1px solid black;
    cursor : pointer;
    padding : 30px;
}
#closeBtn {
    float:right;
    width : 12px;
    height : 12px;
    background : red;
    color : yellow;
    border : 1px solid darkgreen;
    cursor : pointer;
    margin-left : 12px;
    padding : 2px;
    text-align : center;
}
#tooltip {
    display : none;
    visibility : hidden;
    border : 12px;
}

JavaScript

dojo.require("dijit.Tooltip");
dojo.ready(function(){

    var rect = dojo.query(".fakeRectangle").pop();
    
    var position = dojo.coords(rect, true); // true includes scroll

    var aroundRect = {
        x : position.t,
        y : position.l,
        width : position.w,
        height : position.h
    };
    
    var tooltip = dojo.byId("tooltip");

    dojo.connect(rect, "mouseover", function(evt){
        console.debug("Mouse over the box", evt);            
        dijit.showTooltip(tooltip.innerHTML, aroundRect, ["after", "above"]);
    });
    
    var closeBtn = dojo.byId("closeBtn");
    console.debug(closeBtn);
    dojo.connect(window, "click", function(evt) {
        console.debug("hiding tooltip", evt.target);
        if (evt.target.id == "closeBtn") {
            dijit.hideTooltip(aroundRect);
        }
    });
    
});