Ik heb een rollover-colorfade, die ik zonder schokken wil laten werken. Dus ik gebruik voor rollover en rollout een for-loopje waarbij dezelfde waarde i gebruikt wordt. Is hij dus nog niet volledig naar wit (in dit geval), doorloopt het mouseout gedeelte ook automatisch minder stappen.
mOver werkt prima, zo op het oog. mOut werkt alleen als ik alert(i) gebruik en door de stappen heen enter, als ik dat niet gebruik, dan doorloopt hij dezelfde fade als mOver zo op het oog. Het wordt getriggerd met een simpele div die al een #0000FF achtergrond heeft.
mOver werkt prima, zo op het oog. mOut werkt alleen als ik alert(i) gebruik en door de stappen heen enter, als ik dat niet gebruik, dan doorloopt hij dezelfde fade als mOver zo op het oog. Het wordt getriggerd met een simpele div die al een #0000FF achtergrond heeft.
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
| var orval = Array(0, 0, 255); var toval = Array(255, 255, 255); var steps = 12; var i = 1; var rstep = (toval[0] - orval[0]) / steps; var gstep = (toval[1] - orval[1]) / steps; var bstep = (toval[2] - orval[2]) / steps; var theobj = null; var hexColor = Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); function mOver(obj) { theobj = obj; for (i; i < steps + 1; i++) { setTimeout("handleChange("+i+")", i * 80); } } function mOut(obj) { theobj = obj; for (i; i > 0; i--) { alert(i); setTimeout("handleChange("+i+")", i * 80); } } function handleChange(i) { var newr = doubleHex(i, rstep, orval[0]); var newg = doubleHex(i, gstep, orval[1]); var newb = doubleHex(i, bstep, orval[2]); theobj.style.background = "#"+newr+newg+newb; } function doubleHex(num, step, oldcolval) { var newcol = oldcolval + Math.round(num * step); if (newcol > -1 && newcol < 256) { switch (newcol) { case 254: return "ff"; case 0: return "00"; default: var newhex1 = hexColor[(Math.round(newcol / 16) - 1)]; var secondnum = newcol % 16; if (secondnum != 0) { secondnum = secondnum - 1; } var newhex2 = hexColor[(newcol % 16)]; return "" + newhex1 + "" + newhex2 + ""; } } else if (newcol > 255) { return "ff"; } else { return "00"; } } |
iOS developer