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;
    }
    

      

  • 相关阅读:
    在linux上通过docker运行容器,通过docker搭建jenkens环境
    linux jdk 安装报错
    UEditor 后台配置项返回格式出错,上传功能将不能正常使用!
    spring boot 项目 freemarker 无法加载static 中 js css 文件 原因(报错404)
    windows mongodb 添加用户
    window连接本地mongodb 报错 mongodb shell was not initiallized
    Zookeeper(四) 客户端shell命令
    Zookeeper(三) 集群搭建
    Zookeeper(二) 安装及配置
    Zookeeper(一) 入门
  • 原文地址:https://www.cnblogs.com/sj1988/p/6602918.html
Copyright © 2011-2022 走看看