You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Браузери також підтримують властивості `window.innerWidth/innerHeight`. Начебто схоже на те, що нам потрібно. Чому б їх не використати?
21
21
22
22
Якщо є смуга прокрутки, і вона займає деякий простір, то властивості `clientWidth/clientHeight` нададуть ширину/висоту без прокрутки (віднявши її). Інакше кажучи, вони повертають ширину/висоту видимої частини документа, доступної для вмісту.
alert( document.documentElement.clientWidth ); // ширина вікна мінус смуга прокрутки
30
30
```
31
31
32
-
У більшості випадків нам потрібна *доступна* ширина вікна без смуги прокрутки, щоб намалювати або розташувати щось. Тому ми повинні використовувати `documentElement.clientHeight/clientWidth`.
33
-
````
32
+
У більшості випадків нам потрібна *доступна* ширина вікна без смуги прокрутки, щоб намалювати або розташувати щось. Тому ми маємо використовувати `documentElement.clientHeight/clientWidth`.
34
33
35
-
```warn header="`DOCTYPE` важливий"
34
+
```warn header="`DOCTYPE` важливий"
36
35
Зверніть увагу: геометричні властивості верхнього рівня можуть працювати дещо інакше, якщо в HTML немає `<!DOCTYPE HTML>`. Можливі дивні речі.
37
36
38
37
У сучасному HTML ми завжди повинні вказувати `DOCTYPE`.
39
-
` ``
40
38
41
39
## Ширина/висота документа
42
40
43
41
Теоретично, оскільки кореневим елементом документа є `document.documentElement`, і він охоплює весь вміст, ми можемо виміряти повний розмір документа як `document.documentElement.scrollWidth/scrollHeight`.
44
42
45
43
Але для цього елемента для всієї сторінки ці властивості не працюють належним чином. У Chrome/Safari/Opera, якщо немає смуги прокрутки, то `documentElement.scrollHeight` може бути навіть меншим, ніж `documentElement.clientHeight`! З точки зору елемента це неможлива ситуація.
46
44
47
-
Щоб надійно отримати повну висоту документа, ми повинні взяти максимальне з цих властивостей:
45
+
Щоб надійно отримати повну висоту документа, ми повинні взяти максимальне значення з цих властивостей:
48
46
49
47
```js run
50
48
let scrollHeight =Math.max(
@@ -62,7 +60,7 @@ alert('Повна висота документа з прокрученою ча
62
60
63
61
Елементи DOM зберігають свій поточний стан прокрутки у властивостях `scrollLeft/scrollTop`.
64
62
65
-
Стан прокрутки документа міститься в `document.documentElement.scrollLeft/scrollTop`, та працює в більшості браузерів, за винятком старіших вебпереглядачів створених на WebKit, таких як Safari (помилка [5991](https://bugs.webkit.org/show_bug.cgi?id=5991)), де ми повинні використовувати `document.body` замість `document.documentElement`.
63
+
Стан прокрутки документа міститься в `document.documentElement.scrollLeft/scrollTop`, та працює в більшості браузерів, за винятком старіших браузерів створених на WebKit, таких як Safari (помилка [5991](https://bugs.webkit.org/show_bug.cgi?id=5991)), де ми повинні використовувати `document.body` замість `document.documentElement`.
66
64
67
65
На щастя, нам не потрібно пам’ятати про ці особливості, оскільки прокрутка доступна у спеціальних властивостях `window.pageXOffset/pageYOffset`:
Для того, щоб прокручувати сторінку за допомогою JavaScript, її DOM має бути повністю створено.
87
83
88
-
Наприклад, якщо ми спробуємо прокрутити сторінку за допомогою скрипту в `<head>`, це не спрацює.
89
-
` ``
84
+
Наприклад, якщо ми спробуємо прокрутити сторінку в коді скрипта розташованого в `<head>`, це не спрацює.
90
85
91
86
Звичайні елементи можна прокручувати, змінюючи `scrollTop/scrollLeft`.
92
87
@@ -117,7 +112,7 @@ smart header="Також доступні як властивості `window` `
117
112
118
113
Виклик `elem.scrollIntoView(top)` прокручує сторінку таким чином, щоб зробити `elem` видимим. Він має один аргумент:
119
114
120
-
- Якщо `top=true` (за замовчуванням), то сторінка буде прокручена так, щоб `elem` з’явився у верхній частині вікна. Верхній край елемента буде вирівняний з верхньою частиною вікна.
115
+
- Якщо `top=true` (типове значення), то сторінка буде прокручена так, щоб `elem` з’явився у верхній частині вікна. Верхній край елемента буде вирівняний з верхньою частиною вікна.
121
116
- Якщо `top=false`, то сторінка прокручується так, щоб `elem` з’явився внизу. Нижній край елемента буде вирівняний з нижньою частиною вікна.
122
117
123
118
```online
@@ -132,9 +127,9 @@ smart header="Також доступні як властивості `window` `
132
127
133
128
## Заборона прокручування
134
129
135
-
Іноді нам потрібно зробити документ «не прокручуваним». Наприклад, коли нам потрібно закрити сторінку великим повідомленням, яке вимагає негайної уваги, і ми хочемо, щоб відвідувач взаємодіяв з цим повідомленням, а не з документом.
130
+
Іноді нам потрібно зробити документ "не прокручуваним". Наприклад, щоб закрити сторінку великим повідомленням, яке вимагає негайної уваги, і ми хочемо, щоб відвідувач взаємодіяв з цим повідомленням, а не з документом.
136
131
137
-
Щоб зробити документ недоступним для прокручування, достатньо встановити `document.body.style.overflow = "hidden"`. Сторінка «завмре» у поточній позиції прокручування.
132
+
Щоб зробити документ недоступним для прокручування, достатньо встановити `document.body.style.overflow = "hidden"`. Сторінка "завмре" у поточній позиції прокручування.
0 commit comments