feature/gyt
gyt 3 weeks ago
parent 8295c5c767
commit 218b75bc32

@ -9111,6 +9111,7 @@
};
} else {
// 定义一个名为getOffset的函数用于计算元素的偏移量
getOffset = function( elem, doc, docElem ) {
var computedStyle,
offsetParent = elem.offsetParent,
@ -9143,6 +9144,7 @@
offsetParent = elem.offsetParent;
}
if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
top += parseFloat( computedStyle.borderTopWidth ) || 0;
left += parseFloat( computedStyle.borderLeftWidth ) || 0;
@ -9163,31 +9165,39 @@
return { top: top, left: left };
};
}
};
// 重写jQuery的fn.offset方法允许对jQuery对象进行偏移量设置或获取
jQuery.fn.offset = function( options ) {
// 判断是否有传入参数,即是否要设置偏移量
if ( arguments.length ) {
// 如果没有传入具体的options参数即options为undefined则直接返回当前jQuery对象
return options === undefined ?
this :
// 如果有传入参数则对每个匹配的元素调用jQuery.offset.setOffset方法设置偏移量
this.each(function( i ) {
jQuery.offset.setOffset( this, options, i );
});
}
// 获取当前jQuery对象集合中的第一个元素
var elem = this[0],
// 获取该元素的所属文档对象
doc = elem && elem.ownerDocument;
// 如果没有文档对象说明元素不存在或不是一个DOM元素返回null
if ( !doc ) {
return null;
}
// 如果元素是文档的body元素则调用jQuery.offset.bodyOffset方法获取body的偏移量
if ( elem === doc.body ) {
return jQuery.offset.bodyOffset( elem );
}
// 对于非body元素调用getOffset函数获取元素的偏移量
// getOffset函数需要传入元素本身、文档对象和文档的documentElement即html元素
return getOffset( elem, doc, doc.documentElement );
};
jQuery.offset = {
// 定义一个对象jQuery.offset用于处理元素偏移量的相关操作

Loading…
Cancel
Save