Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2017, 17:03
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 02.09.2011
Сообщений: 46

window.screen.width
Подскажите, что означает это свойство?

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

Но от чего она зависит? Если от монитора, то почему она не равна разрешению экрана?

window.screen.width=1024, а разрешение экрана у меня 1280 x 1024.
Ответить с цитированием
  #2 (permalink)  
Старый 26.06.2017, 18:32
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 02.09.2011
Сообщений: 46

Выяснила, что это зависит от window.devicePixelRatio=1.25 у меня. То есть это отношение кол-ва физических пикселей (разрешение экрана, которое в панели управления отображается) к кол-ву логических пикселей в окне браузера. 1024*1.25=1280.
Другой вопрос, от чего оно зависит?
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2017, 19:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от iamme
То есть это отношение кол-ва физических пикселей (разрешение экрана, которое в панели управления отображается) к кол-ву логических пикселей в окне браузера.
Это отношение разрешения в физических пикселях к разрешению в пикселях CSS для текущего устройства отображения, или размер одного пикселя CSS к размеру одного физического пикселя.

Сообщение от iamme
Другой вопрос, от чего оно зависит?
От установленной разрешающей способности, DPI (пикселей на дюйм), по умолчанию в Windows равно 96 DPI = 100%, что равно 1 для devicePixelRatio. devicePixelRatio = 1.25 = 125% = 120 DPI. Изменяется в параметрах экрана.
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2017, 08:06
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 02.09.2011
Сообщений: 46

А у меня на Windows 7 devicePixelRatio = 1.25, и не меняется при изменении параметров экрана. Меняется window.screen.width, а devicePixelRatio остается 1.25.
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2017, 08:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от iamme
на Windows 7
Правый щелчок на столе -> Разрешение экрана -> Сделать текст и другие элементы больше или меньше -> Выбираем из трех: 100%, 125%, 150%.
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2017, 09:17
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 02.09.2011
Сообщений: 46

А, а я то разрешение экрана меняю, спасибо. Так значит этот devicePixelRatio для того и существует, чтобы значки на экране делать крупнее за счет увеличения css пикселей?

И window.screen.width зависит от него. От того, на какой ты сайт заходишь, не зависит. А вот window.innerWidth уже зависит от конкретного сайта (если там width фиксирована, а не 100%) и от того, не сжал ли пользователь браузер. Но если на сайте стоит width=100% и браузер на весь экран, то window.innerWidth=window.screen.width, так?
Или на мобильных еще может быть иначе?
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2017, 09:55
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 02.09.2011
Сообщений: 46

Можно еще в браузере ctrl+ масштаб увеличить - тоже devicePixelRatio меняет
Ответить с цитированием
  #8 (permalink)  
Старый 27.06.2017, 10:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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 и как это влияет на отображение можно почитать тут.

Как это все учитывается при оптимизации веб дизайна можно почитать тут.
Ответить с цитированием
  #9 (permalink)  
Старый 27.06.2017, 11:22
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 27.06.2017, 12:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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 см. Также и экраном, как это и почему происходит по ссылке хорошо описано.

Принтером распечатывали что либо? На нем тоже будут происходить это же, что влияет на результат, который зависит как от разрешения документа, так и от выбранного разрешения печати.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ширина монитора - window.screen.width FredIkO Общие вопросы Javascript 1 07.06.2013 18:23
не работает скрипт в опере SunYang Events/DOM/Window 10 16.06.2012 03:35