魅族面试题小试
看到 http://weibo.com/p/1001603857375168721423?sudaref=www.google.co.jp 分享的一篇魅族的前端面试题,也试着做了下,发现博主其中的一个题目可能跟我做的不太一样。其中有一题目是:2种方式,实现某DIV元素以50px每秒的速度左移100px。
博主给出的答案如下:
//animate
$(function(){
$("#btn").click(function(){
$(".myDiv").animate({left:'100px'},2000);
});
})
//setTimeout
var count = 0;
function moveLeft(){
var currentP = parseInt($(".myDiv").css("marginLeft"));
if(currentP<100){
count += 50;
$(".myDiv").css("marginLeft",count+"px");
setTimeout("moveLeft()",1000);
}
}
其中的第二种方法可能有两点稍微有点问题:1. 题目是向左移,第二种方法是右移;2.每秒移动50px的速度,应该是像jQuery的animate方法一样缓动更合理一些,下面是我的一个思路:
var tick = 0,frameCount = 25,intervalID,perPixel;
perPixel = 50 / 1000 * frameCount;
var initOffset = $('box').offsetLeft;
function $(elementID) {
return document.getElementById(elementID);
}
function move() {
tick ++;
if (tick > 80) {
clearInterval(intervalID);
}else{
$('box').style.left = (initOffset - perPixel*tick) + 'px';
}
}
function moveClickHandler () {
intervalID = setInterval(move,frameCount);
}