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.