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