This is quite clearly best solved by Javascript.
Basically you want to draw your arrow (or whatever) so that its tip points to the area of interest.
Best bet is to:
- find the area in question (say by using document.getElementById)
- compute the (possibly relative) position of the element node.
- reposition/reorient your pointer to point to it.
The second step is generally a difficult problem for arbitrary DHTML documents in various browsers.
I recommend the "walk up the tree" approach... which is basically just walking up the .parent chain from your interesting node until you find the first node that is absolutely positioned.. then you walk back down, asking the browser for the "computed" styles of each container element until you get to the target node, collecting positioning attributes on the way down. You should end up with a "recipe" for how to compute the position of the target-node. (A thorough understanding of DOM, CSSp and browser DOM-bugs is required... implementation left as an exercise for the reader ;)
-David
| [reply] [d/l] |
Hi,
Thankyou everyone for your replies. I am able to compute the position of the element node. Now using the element node, I am able to compute the position of the node. However say my node is a paragraph:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam tellus dui, pharetra nec, pharetra ut, congue non, mauris. Vestibulum id lorem sit amet pede faucibus aliquet. Nunc nec nunc. Sed nec dui placerat elit pulvinar congue. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes
|
In the above table, as you resize the window, the position of "Placerat" word changes.
Now if my arrow was pointing to say "Placerat", its position should always be maintained irrespecitve if the browser is resized or not. When the page is fixed design, this works fine. But when using a table with %, it does not work. Is there somehow I can permanently attach the arrow to a particular word.
Thank you very much,
Anant
| [reply] |
Not easily.
The most direct way to synchronize the position of the word with the pointer is to relatively position the pointer (wrt an invisible div surrounding the word)... but that would create text-flow problems around the target word.
The "walk up the tree" approach I mentioned is till the best way to reliably find the correct position irrespective of layout technique... also, showing the pointer as an absolutely positioned div (above the standard content) doesn't affect the flow of the document.
You can attach an event handler to the resize of the browser window such that the positioning code is re-called to reposition the pointer.
You should probably invest in some good books about unobtrusive Javascript and the HTML DOM.
-David
| [reply] |