Вход Регистрация
Файл: Main Website Files/assets/bower_components/jquery/src/offset.js
Строк: 222
<?php
define
([
    
"./core",
    
"./var/strundefined",
    
"./core/access",
    
"./css/var/rnumnonpx",
    
"./css/curCSS",
    
"./css/addGetHookIf",
    
"./css/support",

    
"./core/init",
    
"./css",
    
"./selector" // contains
], function( jQuerystrundefinedaccessrnumnonpxcurCSSaddGetHookIfsupport ) {

var 
docElem window.document.documentElement;

/**
 * Gets a window from an element
 */
function getWindowelem ) {
    return 
jQuery.isWindowelem ) ? elem elem.nodeType === && elem.defaultView;
}

jQuery.offset = {
    
setOffset: function( elemoptions) {
        var 
curPositioncurLeftcurCSSTopcurTopcurOffsetcurCSSLeftcalculatePosition,
            
position jQuery.csselem"position" ),
            
curElem jQueryelem ),
            
props = {};

        
// Set position first, in-case top/left are set even on static elem
        
if ( position === "static" ) {
            
elem.style.position "relative";
        }

        
curOffset curElem.offset();
        
curCSSTop jQuery.csselem"top" );
        
curCSSLeft jQuery.csselem"left" );
        
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
            ( 
curCSSTop curCSSLeft ).indexOf("auto") > -1;

        
// Need to be able to calculate position if either
        // top or left is auto and position is either absolute or fixed
        
if ( calculatePosition ) {
            
curPosition curElem.position();
            
curTop curPosition.top;
            
curLeft curPosition.left;

        } else {
            
curTop parseFloatcurCSSTop ) || 0;
            
curLeft parseFloatcurCSSLeft ) || 0;
        }

        if ( 
jQuery.isFunctionoptions ) ) {
            
options options.callelemicurOffset );
        }

        if ( 
options.top != null ) {
            
props.top = ( options.top curOffset.top ) + curTop;
        }
        if ( 
options.left != null ) {
            
props.left = ( options.left curOffset.left ) + curLeft;
        }

        if ( 
"using" in options ) {
            
options.using.callelemprops );

        } else {
            
curElem.cssprops );
        }
    }
};

jQuery.fn.extend({
    
offset: function( options ) {
        if ( 
arguments.length ) {
            return 
options === undefined ?
                
this :
                
this.each(function( ) {
                    
jQuery.offset.setOffsetthisoptions);
                });
        }

        var 
docElemwin,
            
elem this],
            
box = { top0left},
            
doc elem && elem.ownerDocument;

        if ( !
doc ) {
            return;
        }

        
docElem doc.documentElement;

        
// Make sure it's not a disconnected DOM node
        
if ( !jQuery.containsdocElemelem ) ) {
            return 
box;
        }

        
// Support: BlackBerry 5, iOS 3 (original iPhone)
        // If we don't have gBCR, just use 0,0 rather than error
        
if ( typeof elem.getBoundingClientRect !== strundefined ) {
            
box elem.getBoundingClientRect();
        }
        
win getWindowdoc );
        return {
            
topbox.top win.pageYOffset docElem.clientTop,
            
leftbox.left win.pageXOffset docElem.clientLeft
        
};
    },

    
position: function() {
        if ( !
this] ) {
            return;
        }

        var 
offsetParentoffset,
            
elem this],
            
parentOffset = { top0left};

        
// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
        
if ( jQuery.csselem"position" ) === "fixed" ) {
            
// Assume getBoundingClientRect is there when computed position is fixed
            
offset elem.getBoundingClientRect();

        } else {
            
// Get *real* offsetParent
            
offsetParent this.offsetParent();

            
// Get correct offsets
            
offset this.offset();
            if ( !
jQuery.nodeNameoffsetParent], "html" ) ) {
                
parentOffset offsetParent.offset();
            }

            
// Add offsetParent borders
            
parentOffset.top += jQuery.cssoffsetParent], "borderTopWidth"true );
            
parentOffset.left += jQuery.cssoffsetParent], "borderLeftWidth"true );
        }

        
// Subtract parent offsets and element margins
        
return {
            
topoffset.top parentOffset.top jQuery.csselem"marginTop"true ),
            
leftoffset.left parentOffset.left jQuery.csselem"marginLeft"true )
        };
    },

    
offsetParent: function() {
        return 
this.map(function() {
            var 
offsetParent this.offsetParent || docElem;

            while ( 
offsetParent && ( !jQuery.nodeNameoffsetParent"html" ) && jQuery.cssoffsetParent"position" ) === "static" ) ) {
                
offsetParent offsetParent.offsetParent;
            }

            return 
offsetParent || docElem;
        });
    }
});

// Create scrollLeft and scrollTop methods
jQuery.each( { scrollLeft"pageXOffset"scrollTop"pageYOffset" }, function( methodprop ) {
    var 
top "pageYOffset" === prop;

    
jQuery.fn[ method ] = function( val ) {
        return 
accessthis, function( elemmethodval ) {
            var 
win getWindowelem );

            if ( 
val === undefined ) {
                return 
win winprop ] : elemmethod ];
            }

            if ( 
win ) {
                
win.scrollTo(
                    !
top val window.pageXOffset,
                    
top val window.pageYOffset
                
);

            } else {
                
elemmethod ] = val;
            }
        }, 
methodvalarguments.lengthnull );
    };
});

// Support: Safari<7+, Chrome<37+
// Add the top/left cssHooks using jQuery.fn.position
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
// getComputedStyle returns percent when specified for top/left/bottom/right;
// rather than make the css module depend on the offset module, just check for it here
jQuery.each( [ "top""left" ], function( iprop ) {
    
jQuery.cssHooksprop ] = addGetHookIfsupport.pixelPosition,
        function( 
elemcomputed ) {
            if ( 
computed ) {
                
computed curCSSelemprop );
                
// If curCSS returns percentage, fallback to offset
                
return rnumnonpx.testcomputed ) ?
                    
jQueryelem ).position()[ prop ] + "px" :
                    
computed;
            }
        }
    );
});

return 
jQuery;
});
?>
Онлайн: 0
Реклама