jQuery.css(): Firefox don't return 'auto' values

前端 未结 4 1076
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-17 19:43

I\'m setting top or bottom and left or right values to a few elements. When i\'m trying to access this values with Firefox (16.0.2), i get a wrong value for top

4条回答
  •  萌比男神i
    2020-12-17 20:23

    I also had this annoying problem.

    Some browsers return the computed position if the element is visible at the moment. The trick is to hide it, read the css and then make it visible again (if was not already hidden).

    I wrote a convenient function that takes care of this and will return auto in Firefox.

    jsFiddle

    var getCss = function($elem, prop) {
            var wasVisible = $elem.css('display') !== 'none';
            try {
                return $elem.hide().css(prop);
            } finally {
                if (wasVisible) $elem.show();
            }
        };
    
    
    alert( getCss($('div'), 'top') );
    

    The finally is just to bring visibility back to the element, just before the function returns.

    You should use this function only for situations where you expect auto to be returned.

提交回复
热议问题