Das ganze wird mit Javascript bewerkstelligt. Doch bevor ich etwas dazu sage, solltets du dir im Klaren sein, das es Leute gibt, die Javascript deaktiviert haben. Deswegen solltets du auf jeden Fall noch eine noscript Variante einbauen.
Wenn ich dich richtig versteh, ist das Formular die ganze Zeit auf der Website, soll aber nur bei einem klick angezeigt werden.
Schritt1: Erstelle das Formular ganz normal und setze es hin wo du willst und vergebe dem Formular eine id (Also da wo es für Leute ohne Javascript stehen würde)
Schritt2: Setze die visibility des Formulars mittels javascript auf hidden.
Schritt3: Lasse ein Script nach dem Laden des Dokumentes (window.onload) laufen, welches das Formular versteckt (visibility = hidden)
Schritt4: Bei einem Klick auf das Element deiner Wahl, lasse folgendes ausführen. Erstellen eines absoluten divs welchen als backgroundColor transparent ist. Dieses hängst du dem body an. (Im Notfall noch zIndex erhöhen, damit es mit Sicherheit der oberste layer ist). Dieses Div ist 100% Breit und Hoch. Und es ist absolut positioniert.
Schritt5: Lasse das Formular sichtbar werden. Hole seine Koordinaten. (Dafür geb ich dir gleich ne Funktion ;)) nehm es dir und häng es in das absolute div rein. Das Formular stellst du auch absolut dar, mit den top und left Koordnaten, die du vorher ermittelt hast.
Schritt6: Klatsch dir noch irgend wo ein Schliessen Button rein. Der alles wieder rückgängig macht. :)
Hier die versprochene Funktion um die koordinaten zu ermitteln
Code:
function getTopLeft(elm) {
var x, y = 0;
x = elm.offsetLeft;
y = elm.offsetTop;
elm = elm.offsetParent;
while(elm !== null) {
x = parseInt(x) + parseInt(elm.offsetLeft);
y = parseInt(y) + parseInt(elm.offsetTop);
elm = elm.offsetParent;
}
return {top:y, left: x};
}