【js基本功能模块】“回到顶部”代码优化

摘要:
在之前的项目中,“返回顶部”的想法是:动态插入div,设置相对定位,即6绝对定位,当窗口“调整大小,滚动”时动态更改位置,即使窗口相对定位,也动态计算位置。新想法:动态插入一个div(如下图所示),将其居中,相对定位,然后计算元素在其中的位置。它支持固定、使用固定、IE6和单独计算。这样做的好处是,在调整窗口大小和滚动窗口时,支持固定的浏览器不需要重新计算元素的位置。IE6,我将不可避免地将代码片段粘贴到项目varTOPPANEL=“#MST common panel”,SIDEPANEL=“#MST common SIDEPANEL”,SUGGESTCLASS=“.MST common advice”,GOTOTOPCLASS=“.MST common goTop”,TPL={wrap:'',innerWrap:',内部:'Title=“Back to top”˃Back to top'}vargoToTop=函数(){if(!

以前项目里面“回到顶部”思路是:动态插入div,设置相对定位,ie6绝对定位,窗口"resize,scroll"的时候动态改变位置,即使是相对定位的时候,也要动态计算位置。

新的思路: 动态插入一个div(如下图),居中,相对定位,然后计算下位置,里面的元素,支持fixed,用fixed,IE6,单独计算,这么做的好处是,在窗口resize,scroll的时候,支持fixed的浏览器不用再重新计算元素的位置了,IE6难免的,还是要计算 

【js基本功能模块】“回到顶部”代码优化第1张

顺便我把项目的里面的代码片段贴一下

    var TOPPANEL = "#MST-common-panel",
        SIDEPANEL = "#MST-common-sidepanel",
        SUGGESTCLASS = ".MST-common-suggest",
        GOTOTOPCLASS = ".MST-common-goTop",
        TPL = {
            wrap : '<div style="950px;position:relative;margin:0 auto;" id="MST-common-panel"></div>',
            innerWrap : '<div id="MST-common-sidepanel" style="position: fixed; bottom: 10px; display: none;30px;z-index:9999" class="undis"></div>',
            inner : '<a class="get-back MST-common-goTop" href="javascript:void(0);" title="返回顶部">返回顶部</a>'
        }
    
    var goToTop = function() {
        if (!$(TOPPANEL).size()) {
            $(document.body).prepend(TPL.wrap)
        }
        $(TOPPANEL).append(TPL.innerWrap);
        var $wrap = $(SIDEPANEL);
        this.init = function() {
            var self = this,
                $window = $(window);
            self.setTop();
            self.initCss();
            $window.bind({
                "scroll" :     function() {
                    (document.body.scrollTop || document.documentElement.scrollTop) === 0 ? $wrap.hide() : $wrap.show();
                    $.isIE6 && setTimeout(function(){
                        self.initCss();                    
                    }, .5 * 1000);
                },
                "resize" : function() {
                    $.isIE6 && setTimeout(function(){
                        self.initCss();                    
                    }, .5 * 1000);
                }
            });            
        };
        this.initCss = function() {
            var cssObj, windowWidth = 950,$window = $(window);
            $.isIE6 ? cssObj = {
                right: "-40px",
                position : "absolute",
                top : $window.scrollTop() + $window.height() - 10 - $wrap.height()
            } : cssObj = {
                right: (document.documentElement.clientWidth - windowWidth) / 2 - 30 - 10 + "px"
            };
            $wrap.css(cssObj);
        };
        this.addCss = function(cssObj) {
            $wrap.css(cssObj);
        };
        this.addItem = function(str) {
            $wrap.append(str);
        };
        this.setTop = function() {
            this.addItem(TPL.inner);
            $wrap.find(GOTOTOPCLASS).click(function(){
                window.scrollTo(0, 0);
                return false;
            });
        }
    };   

免责声明:文章转载自《【js基本功能模块】“回到顶部”代码优化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Python】解压文件/ZIP等 并实时计算解压进度excel截取第一个空格前的字符下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

26种提高ASP.NET网站访问性能的优化方法 .

1. 数据库访问性能优化 数据库的连接和关闭   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。 ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求...

jweixin-1.1.0.js微信接口“分享给朋友”文字和图片配置

在npm官网找到了:微信官方 js-sdk CommonJS 版https://www.npmjs.com/package/weixin-js-sdk 步骤一:引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js备注:支持使用 AMD/CMD 标...

用gulp清除、移动、压缩、合并、替换代码

之前前端代码部署时用的是grunt,后来又出了个gulp工具,最近试用了一下,很方便,感觉比grunt简单好用,下面把一些常见的任务列一下,备用。 var gulp = require('gulp'); var sdir = '0.0.1'; var ddir = '0.0.1.release'; var gutil = require('gulp-u...

js中如何通过身份证号计算出生日期和年龄

在html中有如下标签 身份证号:<input type="text" id="Gra_IDCard" onChange="IDCardChange()"/> <br/> 出生日期:<input type="date" id="Gra_BirthDate"/> <br/> 用...

js 预览 excel,js-xlsx的使用

js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。 官方github:https://github.com/SheetJS/js-xlsx 本...

iframe用js设定自定义高度

JS代码 functionSetWinHeight(obj){ var win=obj; if(document.getElementById){ if (win && !window.opera){ if (win.contentDocument &&win....