Я исследовал какое-то время, пока не нашел решение для CSS, em
и ex
единицы в этом случае неверны. Я хочу просто поле div, которое точно соответствует моноширинному тексту 80x25. Должен ли я прибегать к решениям Javascript?
Как установить ширину <div> для установки постоянного количества букв в моноширинном шрифте?
Ответ 1
em
работает в этом случае, если вы знаете правильные отношения, связанные с вашим шрифтом. Попробуйте использовать следующий HTML-код:
(Опасность заключается в том, что некоторые браузеры настраивают шрифт, который может изменять ширину/высоту шрифта. Для 100% -ной точности вам может потребоваться JavaScript.)
<style type="text/css">
#text-container {
border: #f00 solid 1px;
font: 10px/1.2 Courier, monospace;
width: 48em; /* 80 x 0.6 (the width/height ratio of Courier) */
height: 30em; /* 25 x 1.2 (line-height is 1.2) */
overflow: hidden;
}
</style>
<div id="text-container">
00000000001111111111222222222233333333334444444444555555555566666666667777777777
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
</div>
Ответ 2
Попробуйте использовать блок ch
, описанный в спецификации CSS3:
Одинаково для используемой предварительной меры глифа "0" (ZERO, U + 0030), найденного в шрифте, используемом для рендеринга.
Таким образом, width: 80ch
указывает ограничение ширины 80 символов.
Ответ 3
Для высоты можно использовать em
, но вы также должны установить line-height
:
height: 25em; line-height: 1em;
Или с немного большим интервалом:
height: 30em; line-height: 1.2em;
Нет элемента CSS для ширины символа, поэтому я боюсь, что вам нужен Javascipt...
Ответ 4
Ответ Blixt является правильным, но вы также можете сделать это, если это упростит математику:
font-family: Courier;
font-size: 0.57em;
line-height: 1.2em;
width: 80em;
height: 30em; /* 1.2 * 25; you could set the line-height at 1em and the box height at 25,
but that would squish things too much */