javascript实现悬浮跟随框缓动效果

 更新时间:2022年03月31日 14:07:22   作者:青天诀  
这篇文章主要为大家详细介绍了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 style="height:2000px;">
        <div id="div1">
            
        </div>
        
    </body>
</html>

运行结果图:

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

相关文章

  • js时间戳格式化成日期格式的多种方法

    js时间戳格式化成日期格式的多种方法

    js需要把时间戳转为为普通格式,一般的情况下可能用不到的,下面与大家分享几种不错的方法,感兴趣的朋友不要错过
    2013-11-11
  • js表单提交和submit提交的区别实例分析

    js表单提交和submit提交的区别实例分析

    这篇文章主要介绍了js表单提交和submit提交的区别,结合实例形式较为详细的分析了js表单提交和submit提交具体实现方法与使用技巧,需要的朋友可以参考下
    2015-12-12
  • easyui关于validatebox实现多重规则验证的方法(必看)

    easyui关于validatebox实现多重规则验证的方法(必看)

    下面小编就为大家带来一篇easyui关于validatebox实现多重规则验证的方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 利用JavaScript中的高阶函数和闭包实现命令模式

    利用JavaScript中的高阶函数和闭包实现命令模式

    命令模式提供了一种优雅的解决方案,使得我们能够灵活地封装和管理代码操作,所以本文将为大家介绍命令模式的概念、应用场景以及在JavaScript中的实现方式,需要的可以参考一下
    2023-06-06
  • JS字典Dictionary类定义与用法示例

    JS字典Dictionary类定义与用法示例

    这篇文章主要介绍了JS字典Dictionary类定义与用法,结合实例形式分析了javascript字典Dictionary的定义、添加、移除、统计等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • JavaScript实现广告的关闭与显示效果实例

    JavaScript实现广告的关闭与显示效果实例

    这篇文章主要介绍了JavaScript实现广告的关闭与显示效果,涉及javascript广告窗口的关闭与显示效果实现技巧,需要的朋友可以参考下
    2015-07-07
  • 使用时间戳解决ie缓存的问题

    使用时间戳解决ie缓存的问题

    当编辑某条数据时,再回过头来进行编辑,会发现,里面的数据和没有编辑以前是一样的,这就是ie缓存的问题,下面是一个不错的解决方法
    2014-08-08
  • Javascript设计模式之观察者模式的多个实现版本实例

    Javascript设计模式之观察者模式的多个实现版本实例

    这篇文章主要介绍了Javascript设计模式之观察者模式的多个实现版本实例,本文给出3种实现版本代码,同时给出了Jquery实现版本,需要的朋友可以参考下
    2015-03-03
  • Angular Js文件上传之form-data

    Angular Js文件上传之form-data

    angular-file-upload 是一个基于HTML5技术的文件上传轻量级 AngularJS指令(directive),当浏览器不支持时转为采用 FileAPI polyfill技术实现(基于Flash)。本文主要给大家介绍Angular Js文件上传之form-data,需要的朋友可以参考下
    2015-08-08
  • JavaScript面向对象程序设计创建对象的方法分析

    JavaScript面向对象程序设计创建对象的方法分析

    这篇文章主要介绍了JavaScript面向对象程序设计创建对象的方法,结合实例形式分析了javascript使用object构造函数和对象字面量来创建对象的相关操作技巧,需要的朋友可以参考下
    2018-08-08

最新评论