Jess Collicott <> wrote:

> I would like the element to be positioned relative
> to where the event took place to move the
> element (onclick for example), and be visually
> consistent whether the page has been scrolled
> or not.

Sadly, you can't do it in DOM Level 2 Events. The event object has a
(screen-relative) screenX and (window-relative) clientX property, but no
page-relative property, which is of course by far the most useful one.
IE's window.event object has an ancestor-relative offsetX property which
you can use to get it, but there's no way to get that in Mozilla (even
though Moz implement's IE's offsetX for other elements). Another IE-only
way is to read document.body.scrollTop to work out how to turn
client-relative into page-relative co-ordinates.

A IE/Moz workaround would be to ensure the parent element (eg. body) of
the thing you want to position never scrolls. This can be achieved by
putting all the content in a scrolling div separately from the
positionable element, eg.:

    <div id="content">Lorem ipsum thingy blah</div>
    <div id="floating">I appear under your mouse!</div>

  #floating { position: absolute;
    visibility: hidden; z-index: 2;
  #content { position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    overflow: auto; z-index: 1;

Then the window-relative clientX and clientY values are useful, since
they can be used to position the 'floating' div regardless of scrolling.