zoukankan      html  css  js  c++  java
  • 前端_页面回到顶部封装的js

    // 调用js方法
    $(function () {
    (new GoTop()).init({
    pageWidth :960,
    nodeId :'go-top',
    nodeWidth :50,
    distanceToPage:20,
    distanceToBottom :125,
    hideRegionHeight :130,
    text :''
    });
    });
    GoTop = function() {
    
        this.config = {
            pageWidth            :960,        // 页面宽度
            nodeId                :'go-top',    // Go Top 节点的 ID
            nodeWidth            :50,        // Go Top 节点宽度
            distanceToBottom    :120,        // Go Top 节点上边到页面底部的距离
            distanceToPage        :20,        // Go Top 节点左边到页面右边的距离
            hideRegionHeight    :90,        // 隐藏节点区域的高度 (该区域从页面顶部开始)
            text                :''            // Go Top 的文本内容
        };
    
        this.cache = {
            topLinkThread        :null        // 显示 Go Top 节点的线程变量 (用于 IE6)
        }
    };
    
    GoTop.prototype = {
    
        init: function(config) {
            this.config = config || this.config;
            var _self = this;
    
            // 滚动屏幕, 修改节点位置和显示状态
            jQuery(window).scroll(function() {
                _self._scrollScreen({_self:_self});
            });
    
            // 改变屏幕尺寸, 修改节点位置
            jQuery(window).resize(function() {
                _self._resizeWindow({_self:_self});
            });
    
            // 在页面中插入节点
            _self._insertNode({_self:_self});
        },
    
        /**
         * 在页面中插入节点
         */
        _insertNode: function(args) {
            var _self = args._self;
    
            // 插入节点并绑定节点事件, 当节点被点击, 用 0.4 秒的时间滚动到页面顶部
            var topLink = jQuery('<a id="' + _self.config.nodeId + '" href="#">' + _self.config.text + '</a>');
            topLink.appendTo(jQuery('body'));
            if(jQuery.scrollTo) {
                topLink.click(function() {
                    jQuery.scrollTo({top:0}, 400);
                    return false;
                });
            }
    
            // 节点到屏幕右边的距离
            var right = _self._getDistanceToBottom({_self:_self});
    
            // IE6 (不支持 position:fixed) 的样式
            if(/MSIE 6/i.test(navigator.userAgent)) {
                topLink.css({
                    'display': 'none',
                    'position': 'absolute',
                    'right': right + 'px'
                });
    
            // 其他浏览器的样式
            } else {
                topLink.css({
                    'display': 'none',
                    'position': 'fixed',
                    'right': right + 'px',
                    'top': (jQuery(window).height() - _self.config.distanceToBottom) + 'px'
                });
            }
        },
    
        /**
         * 修改节点位置和显示状态
         */
        _scrollScreen: function(args) {
            var _self = args._self;
    
            // 当节点进入隐藏区域, 隐藏节点
            var topLink = jQuery('#' + _self.config.nodeId);
            if(jQuery(document).scrollTop() <= _self.config.hideRegionHeight) {
                clearTimeout(_self.cache.topLinkThread);
                topLink.hide();
                return;
            }
    
            // 在隐藏区域之外, IE6 中修改节点在页面中的位置, 并显示节点
            if(/MSIE 6/i.test(navigator.userAgent)) {
                clearTimeout(_self.cache.topLinkThread);
                topLink.hide();
    
                _self.cache.topLinkThread = setTimeout(function() {
                    var top = jQuery(document).scrollTop() + jQuery(window).height() - _self.config.distanceToBottom;
                    topLink.css({'top': top + 'px'}).fadeIn();
                }, 400);
    
            // 在隐藏区域之外, 其他浏览器显示节点
            } else {
                topLink.fadeIn();
            }
        },
    
        /**
         * 修改节点位置
         */
        _resizeWindow: function(args) {
            var _self = args._self;
    
            var topLink = jQuery('#' + _self.config.nodeId);
    
            // 节点到屏幕右边的距离
            var right = _self._getDistanceToBottom({_self:_self});
    
            // 节点到屏幕顶部的距离
            var top = jQuery(window).height() - _self.config.distanceToBottom;
            // IE6 中使用到页面顶部的距离取代
            if(/MSIE 6/i.test(navigator.userAgent)) {
                top += jQuery(document).scrollTop();
            }
    
            // 重定义节点位置
            topLink.css({
                'right': right + 'px',
                'top': top + 'px'
            });
        },
    
        /**
         * 获取节点到屏幕右边的距离
         */
        _getDistanceToBottom: function(args) {
            var _self = args._self;
    
            // 节点到屏幕右边的距离 = (屏幕宽度 - 页面宽度 + 1 "此处 1px 用于消除偏移" ) / 2 - 节点宽度 - 节点左边到页面右边的宽度 (20px), 如果到右边距离屏幕边界不小于 10px
            var right = parseInt((jQuery(window).width() - _self.config.pageWidth + 1)/2 - _self.config.nodeWidth - _self.config.distanceToPage, 10);
            if(right < 10) {
                right = 10;
            }
    
            return right;
        }
    };
  • 相关阅读:
    让你的网站在移动端健步如飞
    select元素javascript常用操作 转
    网站CSS写在html里面的好处
    Javascript 严格模式详解
    mac下网页中文字体优化
    js作用域相关知识总结
    【待填坑】 undefined和not defined的区别
    【待填坑】js构造函数和内置对象的区别
    echarts入门1【柱状图/饼图】
    echarts在miniUI和ajax下动态渲染数据
  • 原文地址:https://www.cnblogs.com/logep/p/3545588.html
Copyright © 2011-2022 走看看