js运动特效 小白入门

1.匀速运动:思想有一个div设置了absolute left为0(当然也可以是其他的) 通过定时器周期性加速

var time = null, speed = 10, var div = document.getElementById("sped)

time = setInterval(function(){

      div.style.left = div.offsetLeft+speed+"px"

},speed)

2.侧边栏导航 思想:有一个div 设置了position为absolute  left :-300px  然后鼠标移入然left =0 鼠标移出left归0

var cbl = document.getElementById("cbl");

var time = null;

cbl.onmouseover = function (e) {

AddLinerCross(this,0)

}

cbl.onmouseout = function (e) {

AddLinerCross(this,-200)

}

function AddLinerCross(obj,end){

clearInterval(time);

var speed = end >=0 ? 5:-5

time = setInterval(function (e) {

if(obj.offsetLeft === end){

clearInterval(time);

return;

}

obj.style.left = obj.offsetLeft + speed + "px";

},30)

}

3.变速导航 思想 v=s/t t是自己设置 但是得到结果永远是小数 (因为0-n/m得到是一个不定数 0-50/30=1.666666667)因此需要取整 不取整 会导致f反复得到一个值然后这个值付给offsetleft 然后进行循环导致  定时器无法取消掉 和left永远无法到指定的值

var speed = (终点 - 起点(每次都会发生变化))/time;

var timer = null,end=0,end2=-300;

box.onmouseover = function () {

clearInterval(timer)

timer= setInterval(function (e) {

var speed =Math.ceil( 0 - box.offsetLeft/5);

console.log(speed,box.offsetLeft,end)

if(speed ===end){

clearInterval(timer);

return;

}

box.style.left = box.offsetLeft+speed+"px"

},20)

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值