1em - высота М, а не ширина.То же самое верно для ex, который является высотой x.Говоря в более общем смысле, это высота заглавных и строчных букв.
Ширина - это совершенно другая проблема ...
Измените приведенный выше пример на
<div>
<span>1</span> 3 5 7 9 1 3 5 7 9 1
</div>
и вы заметите, ширина и высота пролета разные.Для шрифта размером 20px в Chrome диапазон составляет 12x22 px, где 20px - высота шрифта, а 2px - для высоты строки.
Теперь, поскольку em и ex здесь бесполезны, возможноСтратегия для решения только для CSS будет заключаться в
- Создать элемент, содержащий только
- Позвольте ему автоматически изменить размер
- Поместите свой div в и
- Сделать его в 10 раз больше окружающего элемента.
Мне, однако, не удалось закодировать это.Я также сомневаюсь, что это действительно возможно.
Та же логика могла бы быть реализована в Javascript.Я использую вездесущий jQuery здесь:
<html>
<head>
<style>
body { font-size: 20px; font-family: Monospace; }
</style>
<script
type="text/javascript"
src ="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js">
</script>
</head>
<body>
<div>1 3 5 7 9 1 3 5 7 9 1</div>
<script>
$('body').append('<div id="testwidth"><span> </span></div>');
var w = $('#testwidth span').width();
$('#testwidth').remove();
$('div').css('width', (w * 10 + 1) + 'px');
</script>
</body>
</html>
+1 в (w * 10 + 1) предназначен для решения проблем округления.