Ответ 1
Вы можете просто использовать элемент cm
в CSS:
#mydiv { width: 25cm; }
Обратите внимание, что, как указывали другие, результат все еще зависит от правильного считывания размера монитора операционной системой.
Подробнее см. spec.
Мне нужно разместить мой сайт div, который составляет ровно 25 см в ширину (10 дюймов) на каждом дисплее. Как я могу это сделать?
Вы можете просто использовать элемент cm
в CSS:
#mydiv { width: 25cm; }
Обратите внимание, что, как указывали другие, результат все еще зависит от правильного считывания размера монитора операционной системой.
Подробнее см. spec.
Как я могу это сделать?
Вы не можете. Обновление: по-видимому, вы можете на многих современных системах: Отправляйтесь в ответ @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 для тестирования.
Вы не можете. Программа может получить только истинные физические размеры экрана, опросив 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.
Вам нужно будет получить разрешение дисплея и шаг точки монитора, чтобы иметь возможность рассчитать это.
Учитывая эти два значения, вы сможете рассчитать количество пикселей, которое вам нужно.
Однако вы не можете получить эту информацию с веб-сайта.
Учитывая, что вы указываете это <div>
на сайте, мы знаем, что вы находитесь в среде веб-браузера.
К сожалению для вас, веб-браузер не имеет никакого способа узнать экран DPI. Вы можете узнать, что такое разрешение экрана, поэтому вы узнаете, имеет ли пользователь 1024x760 или что-то еще, но вы никогда не узнаете, отображаются ли эти 1024x768 пикселей на экране размером с iPhone или рекламном щите или что-либо между ними.
Извините.
Я считаю, что механизм компоновки должен знать три вещи, чтобы сделать это возможным:
Насколько мне известно, он не знает всех трех.