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/

Reply via email to