Подтвердить что ты не робот

Ширина div в см (дюймах)

Мне нужно разместить мой сайт div, который составляет ровно 25 см в ширину (10 дюймов) на каждом дисплее. Как я могу это сделать?

4b9b3361

Ответ 1

Вы можете просто использовать элемент cm в CSS:

#mydiv { width: 25cm; }

Обратите внимание, что, как указывали другие, результат все еще зависит от правильного считывания размера монитора операционной системой.

Подробнее см. spec.

Ответ 2

Как я могу это сделать?

Вы не можете. Обновление: по-видимому, вы можете на многих современных системах: Отправляйтесь в ответ @Tomas. Однако, похоже, он не всегда полностью надежен.

Старый ответ: Вы не можете. Мониторы отображают разные количества пикселей. Размер пикселя изменяется от монитора к монитору.

Существуют способы интерполирования размера пикселя, если вы знаете размер монитора. Эта информация иногда доступна для операционной системы; однако веб-сайт не может получить эту информацию.

Единственное, что можно было бы сделать, это заставить пользователя выполнить калибровку. Например, попросите пользователя взять бумагу формата A4 на монитор и использовать перетаскиваемую линейку, чтобы определить область, которую она покрывает. Используя эту информацию, вы можете рассчитать, сколько пикселей вам потребуется, чтобы показать 25 сантиметров.

Обновление: @Томас утверждает в своем ответе, что с помощью CSS cm значения работают на экране.

Это действительно так на моих Windows 7 и 23 "Plug & Play TFT Monitor (1920x1080 пикселей): 21cm отлично переводится на короткую сторону листа бумаги формата A4 в Chrome 7, IE6 (!), IE7, Firefox 3.6.

Это не кажется полностью надежным: @Yi Jiang не может заставить его работать на TFT, используя Ubuntu Linux; Кроме того, более старые мониторы не могут отправлять информацию по размеру, поэтому ОС не сможет определить правильный размер.

Вот простой JSFiddle для тестирования.

Ответ 3

Вы не можете. Программа может получить только истинные физические размеры экрана, опросив EDID, поскольку значения, возвращаемые Windows API, не являются надежными. Программа может получать истинные значения разрешения (например, 1280 x 1024) и dpi на экране, но браузеры сами по себе не могут этого сделать.

Существует постоянная путаница между "физическим dpi" экрана и "разрешением экрана". Физические dpi, более правильно называемые пикселями на дюйм, получают путем деления максимальной ширины пикселя экрана на физическую (линейную) ширину в дюймах. Пиксели на дюйм фиксируются производственным процессом. Экран dpi - это номер, который пользователь может установить с помощью панели управления, и только цель состоит в том, чтобы преобразовать значение в дюймах в несколько пикселей. Значение пользовательского настраиваемого значения экрана не имеет никакой прямой связи с физическим dpi (пикселей на дюйм) и является просто номером со значением по умолчанию 96. Нет ничего волшебного в 96 или 120

Число пикселей экрана = количество дюймов x экрана dpi

Это так просто.

Причина, по которой 21 см на 23-дюймовом мониторе при 1920 х 1080 "переводит" на ширину листа А4 (21 см), объясняется тем, что с диагональю 23 дюйма ширина экрана составляет 20,05 дюйма и при 1920 пикселях по пикселю плотность составляет 95,76 пикселей на дюйм.
При использовании экрана dpi значение по умолчанию 96, а затем на один дюйм: пиксели = 1 x 96 = 96 пикселей
Плотность пикселей 23-дюймового экрана составляет 95,76 пикселей на дюйм, что соответствует количеству пикселей, которые вы получаете при задании длины одного дюйма, с значением экрана по умолчанию, равным 96.

Если на панели управления изменено разрешение экрана, или изменение разрешения монитора изменилось, то 21 см не будет соответствовать ширине листа A4.

Ответ 4

Вам нужно будет получить разрешение дисплея и шаг точки монитора, чтобы иметь возможность рассчитать это.

Учитывая эти два значения, вы сможете рассчитать количество пикселей, которое вам нужно.

Однако вы не можете получить эту информацию с веб-сайта.

Ответ 5

Учитывая, что вы указываете это <div> на сайте, мы знаем, что вы находитесь в среде веб-браузера.

К сожалению для вас, веб-браузер не имеет никакого способа узнать экран DPI. Вы можете узнать, что такое разрешение экрана, поэтому вы узнаете, имеет ли пользователь 1024x760 или что-то еще, но вы никогда не узнаете, отображаются ли эти 1024x768 пикселей на экране размером с iPhone или рекламном щите или что-либо между ними.

Извините.

Ответ 6

Я считаю, что механизм компоновки должен знать три вещи, чтобы сделать это возможным:

  • Разрешение экрана
  • DPI
  • Размер физического монитора

Насколько мне известно, он не знает всех трех.