Skip to content

Commit

Permalink
Offset setter for fixed position elements in Webkit. Fixes #8316.
Browse files Browse the repository at this point in the history
  • Loading branch information
mmurray authored and jeresig committed Mar 24, 2011
1 parent 1912ded commit e8f4629
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/offset.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,10 +181,10 @@ jQuery.offset = {
curOffset = curElem.offset(),
curCSSTop = jQuery.css( elem, "top" ),
curCSSLeft = jQuery.css( elem, "left" ),
calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
calculatePosition = ((position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
props = {}, curPosition = {}, curTop, curLeft;

// need to be able to calculate position if either top or left is auto and position is absolute
// 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();
}
Expand Down
17 changes: 16 additions & 1 deletion test/unit/offset.js
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,21 @@ test("offsetParent", function(){
equals( div[1], jQuery("#nothiddendiv")[0], "The div is the offsetParent." );
});

testoffset("bug_8316", function( jQuery ){
expect(2);

var tests = [
{ id:'#elem', top: 100, left: 100 }
];

jQuery.each(tests, function(){
var el = jQuery(this.id);
el.offset({ top: this.top, left: this.left});
equals(Math.round(el.offset().top), this.top);
equals(Math.round(el.offset().left), this.left);
});
});

function testoffset(name, fn) {

test(name, function() {
Expand All @@ -447,7 +462,7 @@ function testoffset(name, fn) {
function loadFixture() {
var src = './data/offset/' + name + '.html?' + parseInt( Math.random()*1000, 10 ),
iframe = jQuery('<iframe />').css({
width: 500, height: 500, position: 'absolute', top: -600, left: -600, visiblity: 'hidden'
width: 500, height: 500, position: 'absolute', top: -600, left: -600, visibility: 'hidden'
}).appendTo('body')[0];
iframe.contentWindow.location = src;
return iframe;
Expand Down

0 comments on commit e8f4629

Please sign in to comment.