Я хочу предоставить своим посетителям возможность видеть изображения в высоком качестве. Могу ли я определить размер окна?
Или еще лучше, размер окна просмотра браузера с JavaScript? Смотрите зеленую зону здесь:
javascript
cross-browser
viewport
Аликс Аксель
источник
источник
getComputedStyle
использовать расширенныйhtml
тег.Ответы:
Кросс-браузер
@media (width)
и@media (height)
ценностиwindow.innerWidth
а также.innerHeight
@media (width)
и@media (height)
которые включают полосы прокруткиinitial-scale
и вариации масштабирования могут привести к тому, что мобильные значения будут неправильно уменьшены до того, что PPK вызывает визуальный видовой экран, и будут меньше@media
значенийundefined
в IE8-document.documentElement.clientWidth
а также.clientHeight
@media (width)
и@media (height)
когда нет полосы прокруткиjQuery(window).width()
какой jQuery вызывает в окне просмотра браузераРесурсы
matchMedia
для получения точных размеров в любой единицеисточник
$
наverge
. Если вы хотите интегрироваться в jQuery, тогда делайтеjQuery.extend(verge)
. Смотрите: verge.airve.com/#static<!DOCTYPE html>
верхнюю часть страницы, чтобы код работал.document.documentElement.clientHeight
возвращает высоту страницы , аwindow.innerHeight
возвращает высоту окна просмотра . Большая разница.размерные функции jQuery
$(window).width()
а также$(window).height()
источник
$(window).height();
возвращает 536, тогда как$("html").height();
возвращаетВы можете использовать свойства window.innerWidth и window.innerHeight .
источник
document.documentElement.clientWidth
более точная и более широко поддерживаемая, чемwindow.innerWidth
document.documentElement.clientWidth
- ширина окна просмотра, а window.innerWidth - ширина документа. Да, наоборот.Если вы не используете JQuery, это будет ужасно. Вот фрагмент кода, который должен работать во всех новых браузерах. Поведение отличается в режиме Quirks и режиме стандартов в IE. Это позаботится об этом.
источник
clientHeight
наdocument.documentElement
элемент, который даст вам размер окна просмотра. Чтобы получить размер документа, вам нужно сделатьdocument.body.clientHeight
. Как объясняет Четан, такое поведение относится к современным браузерам. Это легко проверить. Просто откройте консоль и введитеdocument.documentElement.clientHeight
несколько открытых вкладок.Я знаю, что это приемлемый ответ, но я столкнулся с ситуацией, когда
clientWidth
не работало, поскольку iPhone (по крайней мере, мой) вернул 980, а не 320, поэтому я использовалwindow.screen.width
. Я работал над существующим сайтом, будучи «отзывчивым» и должен был заставить большие браузеры использовать другой мета-видовой экран.Надеюсь, это кому-то поможет, возможно, оно не идеальное, но оно работает в моем тестировании на iOS и Android.
источник
Я посмотрел и нашел кроссбраузерный путь:
источник
Мне удалось найти окончательный ответ в JavaScript: «Полное руководство», 6-е издание, О'Рейли, с. 391:
Это решение работает даже в режиме Quirks, а текущие решения ryanve и ScottEvernden - нет.
кроме того, что мне интересно, почему линии
if (document.compatMode == "CSS1Compat")
нетif (d.compatMode == "CSS1Compat")
, все выглядит хорошо.источник
documentElement.clientWidth
не реагирует на изменение ориентации устройства на iOS. б) отображает счетчик физических пикселей (практически бесполезный) вместо виртуальных пикселейЕсли вы ищете решение , отличное от jQuery, которое дает правильные значения в виртуальных пикселях на мобильном телефоне , и вы считаете, что оно простое
window.innerHeight
илиdocument.documentElement.clientHeight
может решить вашу проблему, сначала изучите эту ссылку: https://tripleodeon.com/assets/2011/12/ table.htmlРазработчик провел хорошее тестирование, которое выявило проблему: вы можете получить неожиданные значения для Android / iOS, альбомной / портретной ориентации, дисплеев с нормальной / высокой плотностью.
Мой текущий ответ пока не является «серебряной пулей» (// todo), а скорее предупреждением для тех, кто собирается быстро скопировать и вставить любое решение из этого потока в производственный код.
Я искал ширину страницы в виртуальных пикселях на мобильном телефоне, и я нашел единственный работающий код (неожиданно!)
window.outerWidth
. Позже я проверю эту таблицу на предмет правильного решения с указанием высоты, исключая панель навигации, когда у меня будет время.источник
Этот код взят из http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
NB: чтобы прочитать ширину, используйте
console.log('viewport width'+viewport().width);
источник
Есть разница между
window.innerHeight
иdocument.documentElement.clientHeight
. Первый включает в себя высоту горизонтальной полосы прокрутки.источник
Решение, которое будет соответствовать стандартам W3C, заключается в создании прозрачного div (например, динамически с JavaScript), установке его ширины и высоты 100vw / 100vh (в единицах просмотра) и затем получении его offsetWidth и offsetHeight. После этого элемент можно удалить снова. Это не будет работать в старых браузерах, потому что модули окна просмотра являются относительно новыми, но если вы не заботитесь о них, а о (скоро) стандартах, вы можете определенно пойти по этому пути:
Конечно, вы также можете установить objNode.style.position = "fixed", а затем использовать 100% как ширина / высота - это должно иметь тот же эффект и в некоторой степени улучшить совместимость. Кроме того, установка позиции в положение fixed может быть хорошей идеей в целом, потому что в противном случае div будет невидимым, но займет некоторое пространство, что приведет к появлению полос прокрутки и т. Д.
источник
Это то, как я это делаю, я попробовал это в IE 8 -> 10, FF 35, Chrome 40, он будет работать очень гладко во всех современных браузерах (как определено window.innerWidth) и в IE 8 (без окна. innerWidth), он также работает плавно, любая проблема (например, мигание из-за переполнения: «скрыто»), пожалуйста, сообщите об этом. Меня не очень интересует высота области просмотра, так как я сделал эту функцию просто для обхода некоторых адаптивных инструментов, но она может быть реализована. Надеюсь, это поможет, я ценю комментарии и предложения.
источник