如何实现网页悬浮跟随框的缓动效果?

2026-04-03 06:341阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计637个文字,预计阅读时间需要3分钟。

如何实现网页悬浮跟随框的缓动效果?

悬浮跟随框是我们常在网页中见到的效果,我们也可以使用一个实例中的运动框架来实现。1、定义一个运动函数,当触发事件时调用,并传递一个目标位置作为参数;2、在运动函数内部,调用移动到功能,实现平滑移动。

悬浮跟随框是我们在网页中经常见到的效果,我们还是使用上一实例中的运动框架去实现。

1、定义一个运动函数,当触发时调用,并且传递一个目标位置作为参数
2、运动函数内部,调用定时函数,在定时函数内部,先求出元素位置与目标位置的距离差,然后除以一个数值作为速度(由于距离差一直在缩小,所以速度值也一直在变小,从而达到缓动效果)
3、由于网页上位置设置最小单位是1px,所以在步骤二中的运算可能会出现小数的情况,我们需要对小数进行处理,否则元素到达的位置总是和目标位置有1px的差距。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd"> <html xmlns="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 style="height:2000px;">         <div id="div1">                      </div>              </body> </html>

运行结果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何实现网页悬浮跟随框的缓动效果?

本文共计637个文字,预计阅读时间需要3分钟。

如何实现网页悬浮跟随框的缓动效果?

悬浮跟随框是我们常在网页中见到的效果,我们也可以使用一个实例中的运动框架来实现。1、定义一个运动函数,当触发事件时调用,并传递一个目标位置作为参数;2、在运动函数内部,调用移动到功能,实现平滑移动。

悬浮跟随框是我们在网页中经常见到的效果,我们还是使用上一实例中的运动框架去实现。

1、定义一个运动函数,当触发时调用,并且传递一个目标位置作为参数
2、运动函数内部,调用定时函数,在定时函数内部,先求出元素位置与目标位置的距离差,然后除以一个数值作为速度(由于距离差一直在缩小,所以速度值也一直在变小,从而达到缓动效果)
3、由于网页上位置设置最小单位是1px,所以在步骤二中的运算可能会出现小数的情况,我们需要对小数进行处理,否则元素到达的位置总是和目标位置有1px的差距。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd"> <html xmlns="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 style="height:2000px;">         <div id="div1">                      </div>              </body> </html>

运行结果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何实现网页悬浮跟随框的缓动效果?