Доступ к аппаратным пикселям на мобильных устройствах
Информация для уточнения терминологии здесь.
Аппаратный пиксель: физический пиксель на дисплее. Например, iPhone 5 имеет экран с 640 горизонтальными аппаратными пикселями.
Не зависящий от устройства пиксель (dip): масштабирование пикселей устройства в соответствии с равномерным опорным пикселем на нормальном расстоянии просмотра, что должно быть примерно одинакового размера на всех устройствах. IPhone 5 - 320 провалов широкий.
CSS pixel: единица, используемая для макета страницы, контролируемого окном просмотра. Размеры пикселей в стилях, таких как ширина: 100 пикселей, указаны в CSS пиксели. Отношение пикселей CSS к независимым от устройства пикселам масштаб страницы или масштабирование.
Есть ли способ установить связь между аппаратным пикселем и пикселем CSS, как 1:1.
Я хочу сказать, что если я хочу установить ширину div <100% > , она будет ровно 100 аппаратных пикселей даже на дисплеях Retina.
Ответы
Ответ 1
Экранный масштабный коэффициент (Retina, в настоящее время 2x или 3x) отличается от масштабного коэффициента страницы. При одном и том же масштабном коэффициенте страницы 1px будет представлять собой пиксели 1x1, 2x2 или 3x3, в зависимости от дисплея (Retina).
Похоже на то, что вы хотите сделать, - это управлять экраном с "родным" разрешением, которое бы показало, что оно имеет 2x или 3x количество пикселей, но на (не-сетчатой) экранной шкале 1.
Для этого вам нужно будет преобразовать представление, умножив его размер на коэффициент масштабирования экрана, а масштабируя его с помощью инверсного коэффициента экрана.
Вы можете установить головку <meta name="viewport" content="width=device-width-times-2, initial-scale=0.5">
, но ваш контент будет гораздо менее читабельным и резким.
Если вы хотите сделать это на основе элемента, вы можете установить
-webkit-transform-style: preserve-3d;
-webkit-transform: scale3d(0.5,0.5,0.5);
3d необходимо, так как преобразование 2d может привести к проблемам с сенсорной областью, не соответствующей местоположению элемента в представлении.
Ответ 2
Я думаю, вы можете использовать device-width свойства min-device-width
и max-device-width
для доступа к аппаратным пикселям. device-width
- описывает ширину устройства вывода. Например:
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { ... }
Здесь вы можете найти для них карту стандартных устройств и медиа-запросов.
Кроме того, вы можете настроить медиа-запросы для разных устройств DPI, вы можете использовать свойство min-resolution
на носителе следующим образом:
@media print and (min-resolution: 300dpi) { ... }
Чтобы заменить старый синтаксис min-device-pixel-ratio
, используйте это:
@media screen and (min-resolution: 2dppx) { ... }
Вот источник .
В принципе, в четком CSS вы не можете получить доступ к аппаратным пикселям. Вы можете просто оптимизировать страницы для разных разрешений.
Ответ 3
Вы можете использовать:
@media screen and (max-width: 300px) { /* To Do */ }
ссылка: http://www.w3schools.com/cssref/css3_pr_mediaquery.asp
Ответ 4
Если вам нужна точная взаимосвязь, я не думаю, что вы можете сделать это в CSS.
Но вы можете сделать это в JS:
Чтобы получить ширину div шириной 100 пикселей:
var myDivWidth = 100 / window.devicePixelRatio;
Итак, на iPhone 5 с pixelRatio 2.0 вы будете иметь ширину div шириной 50 пикселей на 100 физических пикселей.
Вы можете сделать то же самое с css transform:scale(0.5)
, если хотите также уменьшить содержимое div.