How do I find the length of string in pixels in javascript , if I know the font-size and font-family?
Asked
Active
Viewed 2.0k times
8
-
and http://stackoverflow.com/questions/4910407/get-string-length-in-pixels-with-javascript?rq=1 and http://stackoverflow.com/questions/5353385/how-to-calculate-the-length-in-pixels-of-a-string-in-javascript?rq=1 – Dogbert May 10 '13 at 09:16
-
As there is here a better answer than in related questions, I now vote to reopen. – Denys Séguret May 11 '13 at 09:06
-
@dystroy I think it would make more sense to merge the answers from this question into the question's duplicate, so that all of the answers can be viewed on one page. – Anderson Green Aug 09 '13 at 19:38
2 Answers
35
The simplest solution is to create an in memory canvas (i.e. one that isn't added to the DOM) and then use the measureText
function :
var canvas = document.createElement('canvas');
var ctx = canvas.getContext("2d");
ctx.font = "11px Arial";
var width = ctx.measureText(str).width;

Denys Séguret
- 372,613
- 87
- 782
- 758
-
After having seen the links, I vote to close as duplicate but please note that my solution is different from the ones in the links (I didn't profile to compare). – Denys Séguret May 10 '13 at 09:21
-
1this is nicer solution. The question was posted but the solutions given I found were using jQuery, whereas I do not have to use jQuery – KK123 May 11 '13 at 08:18
-
After having seen the other answers, I agree. I vote to reopen. You can accept this answer if it pleases you better. – Denys Séguret May 11 '13 at 09:02
-
-
2You know Google doesn't support IE9 any more ? You might want to review the list of browsers you support. – Denys Séguret Nov 15 '13 at 06:23
1
you can put your string into paragraph and use the jquery width function to get the width in pixel width
function showWidth(ele, w) {
$("div").text("The width for the " + ele +
" is " + w + "px.");
}
$("#getp").click(function () {
showWidth("paragraph", $("p").width());
});

Ganesh Bora
- 1,133
- 9
- 17