zoukankan      html  css  js  c++  java
  • 回到页面顶部(带缓冲动画)

    前台页面HTML

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            img {
                position: fixed;
                bottom: 100px;
                right: 50px;
                cursor: pointer;
                display: none;
                border: 1px solid #000;
            }
            div {
                width: 1210px;
                margin: 100px auto;
                text-align: center;
                font: 500 26px/35px "simsun";
                color: red;
            }
        </style>
        <script src="animate.js"></script>
        <script>
            window.onload = function () {
                //需求:被卷去的头部超过100显示小火箭,然后点击小火箭屏幕缓慢移动到最顶端。
                //难点:我们以前是移动盒子,现在是移动屏幕,我们没有学过如何移动屏幕。
                //      技术点:window.scrollTo(x,y);浏览器显示区域跳转到指定的坐标
                //步骤:
                //1.老三步
                var img = document.getElementsByTagName("img")[0];
                window.onscroll = function () {
                    //被卷去的距离大于200显示小火箭,否则隐藏
                    //2.显示隐藏小火箭
                    if(scroll().top>1000){
                        img.style.display = "block";
                    }else{
                        img.style.display = "none";
                    }
                    //每次移动滚动条的时候都给leader赋值,模拟leader获取距离顶部的距离
                    leader = scroll().top;
                }
                //3.缓动跳转到页面最顶端(利用我们的缓动动画)
                var timer = null;
                var target = 0; //目标位置
                var leader = 0; //显示区域自身的位置
                img.onclick = function () {
                    //技术点:window.scrollTo(0,0);
                    //要用定时器,先清定时器
                    clearInterval(timer);
                    timer = setInterval(function () {
                        //获取步长
                        var step = (target-leader)/10;
                        //二次处理步长
                        step = step>0?Math.ceil(step):Math.floor(step);
                        leader = leader +step;
                        //显示区域移动
                        window.scrollTo(0,leader);
                        //清除定时器
                        if(leader === 0){
                            clearInterval(timer);
                        }
                    },25);
                }
            }
        </script>
    
    </head>
    <body>
        <img src="images/Top.jpg"/>
        <div>
            我是最顶端.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
            风吹马尾千条线,雨打羊毛一片毡.....<br>
    
    
        </div>
    </body>
    </html>

    调用封装好的JS文件

    //缓动动画封装
    function animate(ele,target) {
        clearInterval(ele.timer);
        ele.timer = setInterval(function () {
            var step = (target-ele.offsetTop)/10;
            step = step>0?Math.ceil(step):Math.floor(step);
            ele.style.top = ele.offsetTop + step + "px";
            console.log(1);
            if(Math.abs(target-ele.offsetTop)<Math.abs(step)){
                ele.style.top = target + "px";
                clearInterval(ele.timer);
            }
        },25);
    }
    /**
     * Created by andy on 2015/12/8.
     */
    function scroll() {  // 开始封装自己的scrollTop
        if(window.pageYOffset != null) {  // ie9+ 高版本浏览器
            // 因为 window.pageYOffset 默认的是  0  所以这里需要判断
            return {
                left: window.pageXOffset,
                top: window.pageYOffset
            }
        }
        else if(document.compatMode === "CSS1Compat") {    // 标准浏览器   来判断有没有声明DTD
            return {
                left: document.documentElement.scrollLeft,
                top: document.documentElement.scrollTop
            }
        }
        return {   // 未声明 DTD
            left: document.body.scrollLeft,
            top: document.body.scrollTop
        }
    }
    /**
     * Created by Lenovo on 2016/9/2.
     */
    /**
     * 通过传递不同的参数获取不同的元素
     * @param str
     * @returns {*}
     */
    function $(str){
        var str1 = str.charAt(0);
        if(str1==="#"){
            return document.getElementById(str.slice(1));
        }else if(str1 === "."){
            return document.getElementsByClassName(str.slice(1));
        }else{
            return document.getElementsByTagName(str);
        }
    }
    
    /**
     * 功能:给定元素查找他的第一个元素子节点,并返回
     * @param ele
     * @returns {Element|*|Node}
     */
    function getFirstNode(ele){
        var node = ele.firstElementChild || ele.firstChild;
        return node;
    }
    
    /**
     * 功能:给定元素查找他的最后一个元素子节点,并返回
     * @param ele
     * @returns {Element|*|Node}
     */
    function getLastNode(ele){
        return ele.lastElementChild || ele.lastChild;
    }
    
    /**
     * 功能:给定元素查找他的下一个元素兄弟节点,并返回
     * @param ele
     * @returns {Element|*|Node}
     */
    function getNextNode(ele){
        return ele.nextElementSibling || ele.nextSibling;
    }
    
    /**
     * 功能:给定元素查找他的上一个兄弟元素节点,并返回
     * @param ele
     * @returns {Element|*|Node}
     */
    function getPrevNode(ele){
        return ele.previousElementSibling || ele.previousSibling;
    }
    
    /**
     * 功能:给定元素和索引值查找指定索引值的兄弟元素节点,并返回
     * @param ele 元素节点
     * @param index 索引值
     * @returns {*|HTMLElement}
     */
    function getEleOfIndex(ele,index){
        return ele.parentNode.children[index];
    }
    
    /**
     * 功能:给定元素查找他的所有兄弟元素,并返回数组
     * @param ele
     * @returns {Array}
     */
    function getAllSiblings(ele){
        //定义一个新数组,装所有的兄弟元素,将来返回
        var newArr = [];
        var arr = ele.parentNode.children;
        for(var i=0;i<arr.length;i++){
            //判断,如果不是传递过来的元素本身,那么添加到新数组中。
            if(arr[i]!==ele){
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }
    

      

  • 相关阅读:
    《C# to IL》第一章 IL入门
    multiple users to one ec2 instance setup
    Route53 health check与 Cloudwatch alarm 没法绑定
    rsync aws ec2 pem
    通过jvm 查看死锁
    wait, notify 使用清晰讲解
    for aws associate exam
    docker 容器不能联网
    本地运行aws lambda credential 配置 (missing credential config error)
    Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  • 原文地址:https://www.cnblogs.com/sj1988/p/6602918.html
Copyright © 2011-2022 走看看