I've been working on a web side project and it's drawn me down into the abyss of
javascript and page rendering concerns. While using jQuery
has made things easier, I still ran into what seems like a common problem.
I want to resize text objects to a percentage of width of the browser window, or match them up to an image. To do that, I need to know how many pixels go into an em on the user's screen. I ended up with the following jQuery-based solution:
document.prototype.pixels_per_character = function(selector, character) {
	// returns array of character size in px [ horizontal, vertical ]
	//   selector  = jQuery selector, e.g. 'body'
	//   character = string to measure, e.g. 'M', or 'n'
	//
	// one could abuse this and pass in other html as well
	
	var hidden = $('<span>' + character + '</span>'); 
	$( selector ).append(hidden);
	var horizontal = hidden.attr('offsetWidth');
	var vertical = hidden.attr('offsetHeight');
	hidden.hide();
	return { 'horizontal': horizontal, 'vertical': vertical };
}
Now I can resize textareas to percentage widths, which avoids the annoying textarea too big or too small problem, in addition to making layout just a heck of lot more sane.