Як отримати висоту та ширину документа без використання 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
Майк Глісон, jr Couturier,

це повертає висоту 0, коли я використовував його на document.body
Майкл

Можливо, тому, що ваше тіло має висоту 0. Якщо ви не змінюєте його тип дисплея, це так за замовчуванням. Перевірте це в інспекторі DOM.
Ерік Айгнер

11

Отримати розмір документа без jQuery

document.documentElement.clientWidth
document.documentElement.clientHeight

І використовуйте це, якщо вам потрібен розмір екрана

screen.width
screen.height

8

Ви також можете спробувати:

document.body.offsetHeight
document.body.offsetWidth

1
Будьте обережні, використовуючи їх у таких речах, як події зміни розміру вікон. вони повинні обчислити висоту та ширину, яка потребує певного часу.
Майлз

8

Це має працювати для всіх браузерів / пристроїв:

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

    return actualWidth;
}

window.innerWidth - це єдиний, який також є правильним, коли інструменти розробників відкриті на Chrome
Alex


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повертає розмір висоти документа без х прокрутки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.