beste Tweakers,
De afgelopen paar dagen heb ik met een zeer bescheiden javascript kennis een scriptje gebouwd voor een onmouseover voor bijv. links. Nu programmeer ik al een aantal jaar in PHP maar javascript heb ik me de laatste paar dagen ook aardig bijgebracht.
Het scriptje wat ik heb gemaakt is cross-browser alleen IE valt (zoals het wel vaker gebeurd) buiten de boot. Ik kom er met de foutmelding die IE geeft niet echt uit waar de fout zit.
Dit is het script.
Voorbeeld:
www.gersom.nl/smoothblink
Aangezien het verder wel crossbrowser is maar alleen in IE problemen geeft denk ik niet dat het om een schoonheidsfoutje gaat. Weet iemand waar de fout kan zitten? Of is dit gewoon crappy van IE?
De afgelopen paar dagen heb ik met een zeer bescheiden javascript kennis een scriptje gebouwd voor een onmouseover voor bijv. links. Nu programmeer ik al een aantal jaar in PHP maar javascript heb ik me de laatste paar dagen ook aardig bijgebracht.
Het scriptje wat ik heb gemaakt is cross-browser alleen IE valt (zoals het wel vaker gebeurd) buiten de boot. Ik kom er met de foutmelding die IE geeft niet echt uit waar de fout zit.
Dit is het script.
HTML:
1
2
3
4
5
6
| voorbeeld: <div onmouseover="smoothBlink(this, \'ffffff\', \'BBBBBB\', 600);">Een link</div> <div onmouseover="smoothBlink(this, \'ffffff\', \'ff6666\', 600);">Een link2</div> <div onmouseover="smoothBlink(this, \'ffffff\', \'66ff66\', 600);">Een link3</div> //De div is dus wit, vloeit bij een onmouseover over in BBBBBB (naadloos) en weer terug. Daar doet het script 600 milliseconden over. |
JavaScript:
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
| //Decimaal naar hexa function d2hClr(d) { d = d.toString(16); if (d.length < 2) { d = '0'+d; } return d; } //Hexa naar decimaal function h2dClr(h) { return parseInt(h,16); } //In- en uitfaden van een achtergrondkleur counter = 0; intervalFadeClr = ''; function colorFadeClr(){ if (counter < numberOfChanges) { tempColor[1] = d2hClr(h2dClr(tempColor[1])+clrStep[1]); tempColor[2] = d2hClr(h2dClr(tempColor[2])+clrStep[2]); tempColor[3] = d2hClr(h2dClr(tempColor[3])+clrStep[3]); } else { tempColor[1] = d2hClr(h2dClr(tempColor[1])-clrStep[1]); tempColor[2] = d2hClr(h2dClr(tempColor[2])-clrStep[2]); tempColor[3] = d2hClr(h2dClr(tempColor[3])-clrStep[3]); } targetElement2.style.backgroundColor = '#'+tempColor.join(''); counter++; if (counter == numberOfChanges*2) { stopInterval(); } } function stopInterval() { clearInterval(intervalFadeClr); intervalFadeClr = ''; counter = 0; } function smoothBlink(targetElement, normalColor, blinkColor, duration) { if (intervalFadeClr != '') { stopInterval(); targetElement2.style.backgroundColor = '#'+normalColor; } changeTimeOut = 20; //milliseconden numberOfChanges = duration/changeTimeOut/2; nClrSplit = new Array(3); nClrSplit[1] = normalColor.substr(0,2); nClrSplit[2] = normalColor.substr(2,2); nClrSplit[3] = normalColor.substr(4,2); bClrSplit = new Array(3); bClrSplit[1] = h2dClr(blinkColor.substr(0,2)); bClrSplit[2] = h2dClr(blinkColor.substr(2,2)); bClrSplit[3] = h2dClr(blinkColor.substr(4,2)); clrStep = new Array(3); clrStep[1] = Math.round((bClrSplit[1]-h2dClr(nClrSplit[1]))/numberOfChanges); clrStep[2] = Math.round((bClrSplit[2]-h2dClr(nClrSplit[2]))/numberOfChanges); clrStep[3] = Math.round((bClrSplit[3]-h2dClr(nClrSplit[3]))/numberOfChanges); tempColor = nClrSplit; targetElement2 = targetElement; intervalFadeClr = setInterval(colorFadeClr, changeTimeOut); } |
Voorbeeld:
www.gersom.nl/smoothblink
Aangezien het verder wel crossbrowser is maar alleen in IE problemen geeft denk ik niet dat het om een schoonheidsfoutje gaat. Weet iemand waar de fout kan zitten? Of is dit gewoon crappy van IE?