In het code voorbeeld hieronder heb ik twee textboxes verticaal gecentreerd staan op het scherm. Ale ik nu van deze twee textboxes de verticale positie ten opzichte van de pagina wil hebben dan kom ik er met alleen offsetTop en lopen d.m.v. offsetParent niet op de correcte waarde uit. Het huidige scriptje gaat mis bij gebruik van relatieve elementen. Via google heb ik nog geen script kunnen vinden die onderstaand situatie wel correct berekend.
Wat doe ik verkeerd en of heeft iemand wel een correct script die zij of hij wil delen?
Wat doe ik verkeerd en of heeft iemand wel een correct script die zij of hij wil delen?
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Voorbeeldje</title> <style type="text/css"> * {padding: 0; margin: 0;} html,body { height: 100%; width: 100%; } #outer { height: 100%; width: 100%; overflow: visible; #position: relative; } #middle { width: 100%; text-align: center; #position: absolute; #top: 50%; } #inner { #position: relative; #top: -50%; } </style> <script language="javascript" type="text/javascript"> <!-- function getTop(element) { var top = 0; var absoluteAncestor = false; while (element.offsetParent) { top += element.offsetTop element = element.offsetParent; if (element.nodeName.toLowerCase() != 'html') { top += element.clientTop; if (element.currentStyle['position'] == 'absolute') absoluteAncestor = true; } } if (!absoluteAncestor) top += document.getElementsByTagName('BODY')[0].offsetTop; return top; } document.onmousemove = function(){document.getElementById("muis").value = event.clientY;} --> </script> </head> <body> <div id="outer"> <div id="middle"> <div id="inner"> <input id="muis" /> <input id="Text1" /> </div> </div> </div> <script language="javascript" type="text/javascript"> var el = document.getElementById("Text1"); el.value = getTop(el); </script> </body> </html> |