26.06.2017, 17:03
|
Аспирант
|
|
Регистрация: 02.09.2011
Сообщений: 46
|
|
window.screen.width
Подскажите, что означает это свойство?
Вроде это ширина экрана в пикселах.
Не зависит от размера окна браузера. Если сжать окно браузера, не меняется.
Но от чего она зависит? Если от монитора, то почему она не равна разрешению экрана?
window.screen.width=1024, а разрешение экрана у меня 1280 x 1024.
|
|
26.06.2017, 18:32
|
Аспирант
|
|
Регистрация: 02.09.2011
Сообщений: 46
|
|
Выяснила, что это зависит от window.devicePixelRatio=1.25 у меня. То есть это отношение кол-ва физических пикселей (разрешение экрана, которое в панели управления отображается) к кол-ву логических пикселей в окне браузера. 1024*1.25=1280.
Другой вопрос, от чего оно зависит?
|
|
26.06.2017, 19:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от iamme
|
То есть это отношение кол-ва физических пикселей (разрешение экрана, которое в панели управления отображается) к кол-ву логических пикселей в окне браузера.
|
Это отношение разрешения в физических пикселях к разрешению в пикселях CSS для текущего устройства отображения, или размер одного пикселя CSS к размеру одного физического пикселя.
Сообщение от iamme
|
Другой вопрос, от чего оно зависит?
|
От установленной разрешающей способности, DPI (пикселей на дюйм), по умолчанию в Windows равно 96 DPI = 100%, что равно 1 для devicePixelRatio. devicePixelRatio = 1.25 = 125% = 120 DPI. Изменяется в параметрах экрана.
|
|
27.06.2017, 08:06
|
Аспирант
|
|
Регистрация: 02.09.2011
Сообщений: 46
|
|
А у меня на Windows 7 devicePixelRatio = 1.25, и не меняется при изменении параметров экрана. Меняется window.screen.width, а devicePixelRatio остается 1.25.
|
|
27.06.2017, 08:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от iamme
|
на Windows 7
|
Правый щелчок на столе -> Разрешение экрана -> Сделать текст и другие элементы больше или меньше -> Выбираем из трех: 100%, 125%, 150%.
|
|
27.06.2017, 09:17
|
Аспирант
|
|
Регистрация: 02.09.2011
Сообщений: 46
|
|
А, а я то разрешение экрана меняю, спасибо. Так значит этот devicePixelRatio для того и существует, чтобы значки на экране делать крупнее за счет увеличения css пикселей?
И window.screen.width зависит от него. От того, на какой ты сайт заходишь, не зависит. А вот window.innerWidth уже зависит от конкретного сайта (если там width фиксирована, а не 100%) и от того, не сжал ли пользователь браузер. Но если на сайте стоит width=100% и браузер на весь экран, то window.innerWidth=window.screen.width, так?
Или на мобильных еще может быть иначе?
|
|
27.06.2017, 09:55
|
Аспирант
|
|
Регистрация: 02.09.2011
Сообщений: 46
|
|
Можно еще в браузере ctrl+ масштаб увеличить - тоже devicePixelRatio меняет
|
|
27.06.2017, 10:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от iamme
|
Так значит этот devicePixelRatio для того и существует, чтобы значки на экране делать крупнее за счет увеличения css пикселей?
|
window.innerWidth всегда будет равен window.screen.width, так как первое это размер окна включая и полосу прокрутки если она есть. Но, например, Full HD в Windows при 96 DPI, это window.innerWidth = window.screen.width = 1920, а при 120 DPI window.innerWidth/1.25 = window.screen.width/1.25 = 1536, при этом физически ширина монитора в пикселях как была 1920 так и осталась.
Нет, у OS понятий devicePixelRatio и CSS не существует. Что такое DPI/PPI и как это влияет на отображение можно почитать тут.
Как это все учитывается при оптимизации веб дизайна можно почитать тут.
|
|
27.06.2017, 11:22
|
Аспирант
|
|
Регистрация: 02.09.2011
Сообщений: 46
|
|
Да, понимаю, что devicePixelRatio не понятие OS, но отражает
"отношение разрешения в физических пикселях к разрешению в пикселях CSS".
Не, если в браузере увеличить масштаб, то window.innerWidth != window.screen.width (см. скриншот).
То есть если подкрутить масштаб в настройках экрана в Windows, то window.screen.width не соответствует разрешению экрана, установленному в OS.
А если подкрутить масштаб в самом браузере (зажать Ctrl и покрутить колесо мыши), то уже window.innerWidth != window.screen.width. Тоже число CSS пикселей в окне уменьшается из-за увеличения масштаба.
ЗЫ Ну и если окно браузера уменьшить, window.innerWidth уменьшится, а window.screen.width останется прежней
Последний раз редактировалось iamme, 27.06.2017 в 11:26.
|
|
27.06.2017, 12:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от iamme
|
Не, если в браузере увеличить масштаб, то window.innerWidth != window.screen.width (см. скриншот).
То есть если подкрутить масштаб в настройках экрана в Windows, то window.screen.width не соответствует разрешению экрана, установленному в OS.
|
FF, масштаб 150%, window.innerWidth = window.screen.width = 1280 (при физическом 1920/96dpi). Картинок показывать не буду, верьте на слово. А браузер и не будет изменять никаких разрешений монитора, он просто пересчитывает под указанное разрешение устройства. Если создать картинку размером 400х400 с разрешением 300 DPI, то это будет размер примерно 21х21 см, а если с разрешением 96dpi, то примерно около 70х70 см. Также и экраном, как это и почему происходит по ссылке хорошо описано.
Принтером распечатывали что либо? На нем тоже будут происходить это же, что влияет на результат, который зависит как от разрешения документа, так и от выбранного разрешения печати.
|
|
|
|