今天小编给大家分享一下javascript怎么实现悬浮跟随框缓动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
1、定义一个运动函数,当触发时调用,并且传递一个目标位置作为参数
2、运动函数内部,调用定时函数,在定时函数内部,先求出元素位置与目标位置的距离差,然后除以一个数值作为速度(由于距离差一直在缩小,所以速度值也一直在变小,从而达到缓动效果)
3、由于网页上位置设置最小单位是1px,所以在步骤二中的运算可能会出现小数的情况,我们需要对小数进行处理,否则元素到达的位置总是和目标位置有1px的差距。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Web Project</title>
<style>
#div1{
width:100px;
height:150px;
background: red;
border:1px solid #008000;
right:0px;
position: absolute;
}
#div2{
width:1920px;
height:1px;
background:red;
position: absolute;
}
</style>
<script>
window.οnlοad=function(){
var oDiv=document.getElementById('div1');
var oDiv1=document.getElementById('div2');
var timer=null;
oDiv.style.top=(document.documentElement.clientHeight-oDiv.offsetHeight)/2+document.documentElement.scrollTop+'px';
window.οnscrοll=function(){
var scrolltop=document.documentElement.scrollTop || document.body.scrollTop;
var iTarget=(document.documentElement.clientHeight-oDiv.offsetHeight)/2+scrolltop;
iTarget=Math.floor(iTarget);
oDiv1.style.top=iTarget+'px';
startMove(iTarget);
};
function startMove(itarget){
clearInterval(timer);
timer=setInterval(function(){
var iDis=itarget-oDiv.offsetTop;
var speed=iDis/5;
if(iDis>=0){
speed=Math.ceil(speed);//当speed为小于1的数时,将它变为1,从而使元素位置移动一个像素,因为小于1的像素会被近似为0
}
else{
speed=Math.floor(speed);
}
if(oDiv.offsetTop==itarget)
{
clearInterval(timer);
}
else
{
oDiv.style.top=oDiv.offsetTop+speed+'px';
}
document.title=oDiv.offsetTop;
},30);
}
};
</script>
</head>
<body >
<div id="div1">
</div>
</body>
</html>
运行结果图:
以上就是“javascript怎么实现悬浮跟随框缓动效果”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。