2017-02-01 24 views
9

У меня есть монитор с разрешением 1920x1080 для моего ноутбука и Surface Pro 3 с разрешением 1920x1280. Я разрабатываю веб-страницу, предназначенную для полноэкранного просмотра на дисплеях 1920x1080 и 1920x1280.Получить высоту Surface Pro 3 на веб-странице

Я подтвердил настройки для каждого дисплея (см. Ниже).

Почему я получаю 8xx вместо 1280? Как я могу получить значение 1280 для соответствия высоте разрешения Surface Pro 3?


1920х1080 монитор (на Windows 8):

monitor screen resolution

1920x1280 (Surface Pro 3) дисплей (на Windows 10):

Surface Pro 3 display


Использование $(window).height() на моем мониторе 1920х1080, я получаю следующее:

1080

Это работает для меня.


Однако, используя предложения из this question для моих 1920x1280 (Surface Pro 3) дисплей ...

Использование $(window).height():

window

$(document).height() Использование:

document

Использование screen.height:

screen.height

  • Используя предложение от this answer:

innerHeight/clientHeight

  • Используя предложение от this answer:

document.clientHeight

  • Используя предложение от this answer:

availHeight

innerHeight

  • Используя это предложение от this answer:

winsize

  • This suggestion является самостоятельной рекомендацией плагина. На этом я перейду.

  • This suggestion использует раствор для кофе. На данный момент я буду придерживаться JavaScript и jQuery.

  • Используя это предложение от this answer (который извергает несколько других ответов):

testSizes

  • This suggestion требует внешней библиотеки. На этом я пока перейду.

  • Используя предложение от :

scrollHeight

  • This suggestion был включен в несколько других ответов выше.

+0

Возможный дубликат [Получить размер экрана, текущую веб-страницу и окно браузера] (http://stackoverflow.com/questions/3437786/get-the-size-of-the-screen-current-web- page-and-browser-window) –

+0

@MikeMcCaughan Я пробовал каждое предложение из [принятого ответа] (http://stackoverflow.com/a/3437825) безрезультатно. Я обновляю вопрос с результатами каждого указанного предложения. –

+0

На этот вопрос представлено 14 ответов. Дубликат не означает, что только принятый ответ будет работать. –

ответ

2

кажется, что ваш Surface Pro 3 использует широкий коэффициент масштабирования операционной системы - 150%. Благодаря этому браузер возвращает ширину 1280 и высоту 853 (как 1280 * 1,5 = 1920 и 853 * 1,5 = 1280). Переключите коэффициент масштабирования Windows на 100% в панели управления, и ваш браузер вернет ширину и высоту, как ожидалось.

2

1) Как я могу получить значение 1280, чтобы соответствовать высоте разрешающих поверхностей Pro 3?

Вы пробовали

window.outerHeight 

еще?

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

2) Почему я получаю 8xx вместо 1280?

В основном, браузеры будут увеличивать текст/изображения/и т. Д., Чтобы обеспечить последовательный опыт в нескольких разрешениях. Даже если вы создаете его для экрана 1280, у вас может быть только 8xx пикселей.

Для получения дополнительной информации о pixeling I совет вы прочтете:

http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html

+0

Мои тестовые примеры были надуманны из «повторяющегося вопроса», в котором ни одно из этих предложений не использовало 'внешнийHeight'. 'externalHeight' дает мне 814. Вторая часть вашего ответа полезна ... причина, по которой я пытаюсь определить высоту (в пикселях), - это выбрать соответствующий файл css на основе отображения. Это выглядит сложнее, чем просто найти высоту (в пикселях). –

+0

В принципе. Забудьте о точной высоте. Пойдите с тем, что браузер говорит вам, потому что это то, что пользователь испытывает, потому что браузер «масштабирует» его в соответствии с настройками пользователей. Пользователи, установившие глобальный рабочий стол для увеличения, будут разорвать ваше приложение в противном случае: http://www.windowscentral.com/how-make-text-apps-bigger-windows-10 – Tschallacka

+0

Право. Это означает, что мне нужно будет найти способ определения отображения, используемого по-другому (и попытайтесь приспособиться к этим увеличениям в случаях). Благодаря! –

0

В браузере вы имеете дело с абстракцией CSS пикселей, а не с физическими пикселями. Размер, о котором сообщается вам, скорее всего правильный (если в игре нет странной ошибки браузера), поэтому высота окна равна 853 CSS-пиксели.

Моим советом было бы работать с такими размерами. Отрегулируйте макет с помощью мультимедийных запросов и т. Д. Не пытайтесь вторгаться в браузер; не оптимизируйте аппаратные особенности, которые производители браузеров и веб-стандарты активно пытаются скрыть от вас.

(я попытаюсь расширить этот ответ позже, если у меня есть время. Правильное объяснение понятий длина блога.)

+0

Да, если у меня будет время, я возьму ваше предложение и посмотрю, что это делает, но я подозреваю, что ты прав. Моя забота об этом подходе заключается в том, что если есть «истинный» 1280-дисплей, который сообщает высоту 1280 ... что бы сбросить настройки моих таблиц стилей на основе дисплея. –

+1

Собственно, вам не о чем беспокоиться. Поставщики браузеров принимают решение о соотношении пикселей устройства (количество пикселей устройства, соответствующее виртуальному пикселю CSS). Это решение основано на том, что выходит за рамки вашего контроля: размеры физического экрана, ожидаемое расстояние просмотра, плотность пикселей и, возможно, OS-широкие пользовательские настройки. Вы _meant_ для работы с размером, указанным в JS. Масштабирование результата в физической среде - это совместная ответственность производителей оборудования, ОС и браузера. Вы больше не участвуете в этом. – hashchange

1

Вот решение, которое работало для меня в Firefox, Chrome, IE11 и Edge. У меня нет Mac для тестирования, но это тоже должно работать. Вы должны учитывать коэффициент пикселя устройства. Вот пример (JSBin):

var screenHeight = window.devicePixelRatio * screen.height; 

Это даст вам размеры экрана, независимо от DPI устройства.

Важно отметить, что innerHeight (размер окна без интерфейса браузера) и outerHeight (размер окна с пользовательским интерфейсом браузера) относятся к окну браузера. Вы должны использовать их вместо screen.height, если хотите узнать размер окна браузера.

+0

Спасибо за подтверждение. Это то, к чему меня привели с [комментарием Чалацки] (https://stackoverflow.com/questions/41984029/get-height-of-surface-pro-3-on-web-page/42100480#comment71311711_42069610). Примечание также полезно. –

 Смежные вопросы

  • Нет связанных вопросов^_^