Як отримати висоту та ширину документа без використання 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.