move.js
1.19 KB
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
function startMove(obj, json, endFn) {
clearInterval(obj.timer)
obj.timer = setInterval(function() {
let bBtn = true
for (let attr in json) {
let iCur = 0
if (attr === 'opacity') {
if (Math.round(parseFloat(getStyle(obj, attr)) * 100) === 0) {
iCur = Math.round(parseFloat(getStyle(obj, attr)) * 100)
} else {
iCur = Math.round(parseFloat(getStyle(obj, attr)) * 100) || 100
}
} else {
iCur = parseInt(getStyle(obj, attr)) || 0
}
let iSpeed = (json[attr] - iCur)/8
iSpeed = iSpeed >0 ? Math.ceil(iSpeed) : Math.floor(iSpeed)
if (iCur !== json[attr]) {
bBtn = false
}
if (attr === 'opacity') {
obj.style.filter = 'alpha(opacity=' + (iCur + iSpeed) + ')'
obj.style.opacity = (iCur + iSpeed)/100
} else {
obj.style[attr] = iCur + iSpeed + 'px'
}
}
if (bBtn) {
clearInterval(obj.timer)
if (endFn) {
endFn.call(obj)
}
}
}, 30)
}
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr]
} else {
return getComputedStyle(obj,false)[attr]
}
}
export default startMove