Pracuji na addonu pro Firefox (napsané v JS). Program dělá následující, klikneš na element na stránce a zorazí se ti výpis s informacemi o elementu. K tomu používám div#panel a jquery. V panelu je tedy ten výpis. Problém nastává, když je výpis moc dlouhý. Například na seznam.cz kliknu na element
INPUT id='fulltext-field'
a když se zobrazí všechny informace od rodičů až po tento input včetně atributů tak už mi div přesahuje do záporných hodnot na ose y. Ještě horší to je když jdu níže, scrollu níž a kliknu a nic se mi nezobrazí nebo to prostě zmizelo asi někam moc nahoru na začátek stránky nebo do záporných hodnot.
Výpočet:
var ClientW = jQuery(window).width();
var ClientH = jQuery(window).height();
// následuje smyčka která vkládá informace do div#panel ul
// dále výpočet pozice
var w = $('div#make_it_easy_panel').width();
var h = $('div#make_it_easy_panel').height();
var y = (e.clientY > ClientH - h )?ClientH-h*2:e.clientY-h;
var x = (e.clientX > ClientW - w )?ClientW-w:e.clientX;
// Pak už jen pozicování divu
$('#panel').css({ left: x, top: y })
Mým záměrem bylo udělat to tak, aby div byl nad pozicí myší pokud je tam dost místa.
Anebo aby byl pod pozicí myší pokud je tam dost místa.
Prostě jde o to, aby byl vidět celý element div a nezasahovalo to do oblasti kam jsem klikl.
Obrázky: