Beste mensen,
Ik heb een smooth scroll zo aangepast dat ik het ook met iframes kan laten werken.
In het hoofdvenster klik je op een link, waarna het binnen het iframe naar het juiste anchor scrollt. Dit werkt bijna perfect. Echter, in een flits zie je bovenkant van de pagina, waarna de pagina van het juiste punt naar het andere juiste punt scrollt.
Wellicht dat iemand van jullie zo het probleem ziet.
Je kunt script werkend zien op de volgende site: www.roemervandersteeg.nl/test.php
Ik heb een smooth scroll zo aangepast dat ik het ook met iframes kan laten werken.
In het hoofdvenster klik je op een link, waarna het binnen het iframe naar het juiste anchor scrollt. Dit werkt bijna perfect. Echter, in een flits zie je bovenkant van de pagina, waarna de pagina van het juiste punt naar het andere juiste punt scrollt.
Wellicht dat iemand van jullie zo het probleem ziet.
Je kunt script werkend zien op de volgende site: www.roemervandersteeg.nl/test.php
code:
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| <script type="text/javascript"> //<![CDATA[ var scrollInt; var scrTime, scrSt, scrDist, scrDur, scrInt; function replaceAnchorLinks() { var anchors, i, targ, targarr; if (!document.getElementById) return; // get all anchors anchors = document.getElementsByTagName("a"); for (i=0;i<anchors.length;i++) { // get name of target anchor targ = anchors[i].href.substring( anchors[i].href.indexOf("#")+1 ); // find target anchor targarr = parent.iframe.document.getElementsByName( targ ); if (targarr.length) { anchors[i].className = (targarr[0].offsetTop < anchors[i].offsetTop) ? "up" : "down"; anchors[i].id = "__" + targ; // save target as id with prefix (used in onclick function below) anchors[i].onmousedown = function () { scrollToAnchor( this.id.substring( 2 ) ); return false; }; anchors[i].href = "iframe.php#"; // rewrite href } } } /* SCROLL FUNCTIONS */ function scrollPage() { scrTime += scrInt; if (scrTime < scrDur) { window.iframe.scrollTo( 0, easeInOut(scrTime,scrSt,scrDist,scrDur) ); }else{ window.iframe.scrollTo( 0, scrSt+scrDist ); clearInterval(scrollInt); } } function scrollToAnchor(aname) { var anchors, i, ele; if (!document.getElementById) return; // get anchor anchors = iframe.document.getElementsByTagName("a"); for (i=0;i<anchors.length;i++) { if (anchors[i].name == aname) { ele = anchors[i]; i = anchors.length; } } // set scroll target if (window.iframe.scrollY) scrSt = window.iframe.scrollY; else if (iframe.document.documentElement.scrollTop) scrSt = iframe.document.documentElement.scrollTop; else scrSt = iframe.document.body.scrollTop; scrDist = ele.offsetTop - scrSt; scrDur = 1000; scrTime = 0; scrInt = 10; // set interval clearInterval(scrollInt); scrollInt = setInterval( scrollPage, scrInt ); } /* EASING FUNCTIONS */ function easeInOut(t,b,c,d) { return c/2 * (1 - Math.cos(Math.PI*t/d)) + b; } //]]> </script> |