Как получить высоту и ширину документа без использования jquery


112

Как получить высоту и ширину документа в чистом виде т.е. без использования .
Я знаю об $(document).height()и $(document).width(), но хочу сделать это в.

Я имел в виду высоту и ширину страницы.


Ответы:


119
var height = document.body.clientHeight;
var width = document.body.clientWidth;

Проверьте: эта статья для лучшего объяснения.


9
Это не кроссбраузер. Вы должны были протестировать это перед публикацией.

12
@Iwazaru Спасибо, что указали на это. Похоже, этот ответ 4-летней давности не является пуленепробиваемым :)
— Дамб,


Если у веб-сайта есть граница, она снимает ее с ширины с помощью этого решения, но не решения jQuery. Вряд ли граница на теле, но стоит знать. window.innerWidthрешает это
— BritishSam

Это возвращает высоту окна браузера (если вы отрегулируете высоту браузера, которую он изменит), а не высоту содержимого / веб-страницы.
— Радмация

56

Даже последний пример, приведенный на http://www.howtocreate.co.uk/tutorials/javascript/browserwindow , не работает в режиме Quirks. Легче найти, чем я думал, похоже, это решение (извлеченное из последнего кода jquery):

Math.max(
    document.documentElement["clientWidth"],
    document.body["scrollWidth"],
    document.documentElement["scrollWidth"],
    document.body["offsetWidth"],
    document.documentElement["offsetWidth"]
);

просто замените Width на "Height", чтобы получить высоту.


1
Это должен быть правильный ответ. clientWidth не всегда имеет правильное значение.
— Wildhammer

проблема с clientWidth в том, что он доступен только для просмотра. scrollWidth включает вещи, выходящие за пределы экрана. по крайней мере, это верно для моих экспериментов с Chrome в 2019 году.
— StayCool

@StayCool кажется, что последний jQuery все еще использует этот метод для расчета высоты / ширины документа и дает тот же результат, что и $(document).width(). Возможно, вам нужно что-то вроде того, $(window).width()что в чистом JS было бы просто document.documentElement["clientWidth"]в современных браузерах.
— Дэн

38

Это кросс-браузерное решение:

var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

Это безопасный и точный
— Нань Чжоу

1
это возвращает высоту и ширину окна, а не высоту и ширину документа
— Майкл

25

Вы должны использовать, getBoundingClientRectпоскольку он обычно работает, кросс-браузер и дает вам субпиксельную точность на прямоугольнике границ.

elem.getBoundingClientRect()

1
для тех, кто интересуется поддержкой: caniuse.com/#feat=getboundingclientrect
— Майк Глисон-младший Кутюрье

это возвращает высоту 0, когда я использовал его в document.body
— Майкл

Вероятно, потому что ваше тело имеет нулевой рост. Если вы не измените тип его отображения, это будет по умолчанию. Проверьте это в инспекторе DOM.
— Эрик Айгнер

11

Получить размер документа без jQuery

document.documentElement.clientWidth
document.documentElement.clientHeight

И используйте это, если вам нужен размер экрана

screen.width
screen.height

8

Вы также можете попробовать:

document.body.offsetHeight
document.body.offsetWidth

1
Будьте осторожны, используя их в таких вещах, как события изменения размера окна. они должны рассчитать высоту и ширину, что требует времени.
— Miles

8

Это должно работать для всех браузеров / устройств:

function getActualWidth()
{
    var actualWidth = window.innerWidth ||
                      document.documentElement.clientWidth ||
                      document.body.clientWidth ||
                      document.body.offsetWidth;

    return actualWidth;
}

window.innerWidth - единственный, который также верен, когда инструменты разработчика открыты в Chrome
— Алекс


1

Как очень легко узнать ширину и высоту документа?

в HTML
<span id="hidden_placer" style="position:absolute;right:0;bottom:0;visibility:hidden;"></span>

в javascript

     var c=document.querySelector('#hidden_placer');

     var r=c.getBoundingClientRect();
     r.right=document width
     r.bottom=document height`

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


0

windowэто окно всего приложения браузера. documentПоказанная веб-страница действительно загружена.

window.innerWidthи window.innerHeightбудет учитывать полосы прокрутки, что может быть не тем, что вам нужно.

document.documentElement- это полная веб-страница без верхней полосы прокрутки. document.documentElement.clientWidthвозвращает размер ширины документа без полосы прокрутки y. document.documentElement.clientHeightвозвращает размер документа по высоте без полосы прокрутки x.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.