I've run into the same problem with IE :-( I did more or less what Dave suggested (untested, of course!):
var $tmp = $('#some-element') .append('<div style="position: absolute; width: ' + $('#some-element').css('font-size') + ';" />') .find(':last-child') var fontSizeInPx = $tmp.width(); $tmp.remove(); This would work for other units (i.e. in, pt) and other properties (text-indent, line-height) too. Some things to watch out for: * the element you want to measure must be able to have children (i.e. not <br />, <img />) * this method makes the browser to two extra re-flows (I think?) * make sure the appended div doesn't pick-up any funny business from the cascade. Luke Dave Methvin wrote: >> Firefox is returning the value in pixels while IE6 is returning >> the value in ems. Is this a bug? > > It's just IE being IE. Other browsers have getComputedStyle which tells > you the dimensions in pixels. IE has currentStyle; although that does > tell you the current style (taking the CSS cascade into effect) it > returns whatever dimensions were given in the style rule. jQuery's > .css() method uses whatever it's dealt by the browser. > > I think I've seen IE hacks where you can put a box around a character > and then measure the box in pixels to get the font size, but my > Google-fu is weak at the moment. > > > ------------------------------------------------------------------------ > > _______________________________________________ > jQuery mailing list > discuss@jquery.com > http://jquery.com/discuss/ _______________________________________________ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/