// ./lib/move.js // å°è£ è·å计ç®åå ç´ æ ·å¼å½æ°ï¼è¿åå°æ° function getStyle(obj, name) { if (obj.currentStyle) { return obj.currentStyle[name]; } else { return getComputedStyle(obj, '') [name]; } } // ä»»æå¼è¿å¨æ¡æ¶ function startMove(obj, json, fnEnd ) { clearInterval(obj.timer); obj.timer = setInterval(move, 30); function move() { var current = 0; var stop = true; for (const attr in json) { if (attr === 'opacity') { // ç¨ parseFloat ä¿çå°æ°å¹¶å»æåé¢ px ï¼ä»å·¦è³å³æåæ°åï¼éå°ä¸æ¯æ°åè·³åº // Math.round() åèäºå ¥åæ´ current = Math.round(parseFloat(getStyle(obj, attr))*100); } else { // ç¨ parseInt 廿åé¢ px ï¼ä»å·¦è³å³æåæ°åï¼éå°ä¸æ¯æ°åè·³åº current = parseInt(getStyle(obj, attr)); } var speed = (json[attr] - current)/4; if (speed < 0) { speed = Math.floor(speed); } else { speed = Math.ceil(speed); } if (json[attr] === current) { stop = true; } else { stop = false; if (attr === 'opacity') { obj.style[attr] = (current + speed)/100; obj.style.filter = "alpha("+[attr]+ "=" + (current + speed) + ")"; } else { obj.style[attr] = current + speed + 'px'; } } // console.log('json[attr]:',json[attr],'attr:', attr,'current:',current,'getStyle:',getStyle(obj, attr),'speed:',speed); } if (stop === true) { clearInterval(obj.timer); if (fnEnd) { fnEnd() } } } }