Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^3: Position on Web Page

by Gavin (Archbishop)
on Aug 19, 2007 at 16:49 UTC ( [id://633621]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Position on Web Page
in thread Position on Web Page

So to use your example the arrow is attached to the "keyword" but because of formatting the word position changes with window size.
Then perhaps one way would be to combine text and "arrow pointer" into an image and display that in the browser

Replies are listed 'Best First'.
Re^4: Position on Web Page
by erroneousBollock (Curate) on Aug 19, 2007 at 17:12 UTC
    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:

    1. find the area in question (say by using document.getElementById)
    2. compute the (possibly relative) position of the element node.
    3. 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

      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
        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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://633621]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2024-04-25 11:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found