魅族面试题小试

看到 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);
             }   
		   
posted @ 2015-08-20 14:31  Ryot  阅读(296)  评论(0编辑  收藏  举报