Я сделал крошечный модуль ES6 (использует jQuery):
import $ from 'jquery';
const $span=$('<span>');
$span.css({
position: 'absolute',
display: 'none'
}).appendTo('body');
export default function(str, css){
$span[0].style = ''; // resetting the styles being previously set
$span.text(str).css(css || {});
return $span.innerWidth();
}
Простота в использовании:
import stringWidth from './string_width';
const w = stringWidth('1-3', {fontSize: 12, padding: 5});
Замечательная вещь, которую вы можете заметить - она позволяет учитывать любые атрибуты CSS, даже отступы!