zoukankan      html  css  js  c++  java
  • 运动之分享到

    匀速运动和缓冲运动的结合:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>上下滑动的侧边栏</title>
        <style>
            body{height:2000px;}
            #div1{width:100px;height:200px;background-color:yellow;position:absolute;left:-100px;top:0;}
            span{width:20px;position:absolute;right:-20px;background-color:black;color:white;text-align:center;}
        </style>
    </head>
    <body>
    <div id="div1">
        <span>分享到</span>
    </div>
    </body>
    </html>
    <script type="text/javascript">
        window.onload = function () {
            var oDiv = document.getElementById("div1");
            oDiv.onmousemove = function () {
                startMove(0);
            }
            oDiv.onmouseout = function () {
                startMove(-100);
            }
        }
        var timer = null;
    
        //    左右匀速运动
        function startMove(iTarget) {//通过目标点来计算速度
            var oDiv = document.getElementById("div1");
            clearInterval(timer);
            timer = setInterval(function () {
                var iSpeed = 0;
                if(oDiv.offsetLeft<iTarget){
                    iSpeed = 7;
                }else{
                    iSpeed = -7;
                }
                if(Math.abs(oDiv.offsetLeft-iTarget)<7){
                    clearInterval(timer);
                    oDiv.style.left = iTarget+'px';
                }else{
                    oDiv.style.left = oDiv.offsetLeft+iSpeed+"px";
                }
            },30)
        }
    
    
        window.onscroll=function ()
        {
            var oDiv=document.getElementById('div1');
            var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
    
            //oDiv.style.top=scrollTop+(document.documentElement.clientHeight-oDiv.offsetHeight)/2+'px';
            var t=scrollTop+(document.documentElement.clientHeight-oDiv.offsetHeight)/2;
    
            startMove2(parseInt(t));
        }
        //上下缓冲运动
        function startMove2(iTarget)
        {
            var oDiv=document.getElementById('div1');
            clearInterval(timer);
            timer=setInterval(function (){
                var iSpeed=(iTarget-oDiv.offsetTop)/8;
                iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
                if(oDiv.offsetTop==iTarget)
                {
                    clearInterval(timer);
                }
                else
                {
                    oDiv.style.top=oDiv.offsetTop+iSpeed+'px';
                }
            }, 30);
        }
    </script>
  • 相关阅读:
    重启机器导致mysql启动失败
    setTimeout 的方式实现 setInteval
    4.1 k8s-pod的基本操作
    Git
    leetcode -1
    面试-总结
    网络基础
    问题总结
    Notepad++安装
    Django 使用Form组件完成登录注册
  • 原文地址:https://www.cnblogs.com/wang715100018066/p/6022831.html
Copyright © 2011-2022 走看看