Skip to content

Commit 3768fc6

Browse files
authored
Apply suggestions from code review
1 parent 5b084dd commit 3768fc6

File tree

1 file changed

+12
-17
lines changed
  • 2-ui/1-document/10-size-and-scroll-window

1 file changed

+12
-17
lines changed

2-ui/1-document/10-size-and-scroll-window/article.md

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
<button onclick="alert(document.documentElement.clientHeight)">alert(document.documentElement.clientHeight)</button>
1717
```
1818

19-
`` ``warn header="Не `window.innerWidth/innerHeight`"
20-
Браузери також підтримують властивості `window.innerWidth/innerHeight`. Начебто схоже на те, що нам потрібно. Чому не використати їх?
19+
````warn header="Не `window.innerWidth/innerHeight`"
20+
Браузери також підтримують властивості `window.innerWidth/innerHeight`. Начебто схоже на те, що нам потрібно. Чому б їх не використати?
2121

2222
Якщо є смуга прокрутки, і вона займає деякий простір, то властивості `clientWidth/clientHeight` нададуть ширину/висоту без прокрутки (віднявши її). Інакше кажучи, вони повертають ширину/висоту видимої частини документа, доступної для вмісту.
2323

@@ -29,22 +29,20 @@ alert( window.innerWidth ); // повна ширина вікна
2929
alert( document.documentElement.clientWidth ); // ширина вікна мінус смуга прокрутки
3030
```
3131

32-
У більшості випадків нам потрібна *доступна* ширина вікна без смуги прокрутки, щоб намалювати або розташувати щось. Тому ми повинні використовувати `documentElement.clientHeight/clientWidth`.
33-
`` ``
32+
У більшості випадків нам потрібна *доступна* ширина вікна без смуги прокрутки, щоб намалювати або розташувати щось. Тому ми маємо використовувати `documentElement.clientHeight/clientWidth`.
3433

35-
` ``warn header="`DOCTYPE` важливий"
34+
```warn header="`DOCTYPE` важливий"
3635
Зверніть увагу: геометричні властивості верхнього рівня можуть працювати дещо інакше, якщо в HTML немає `<!DOCTYPE HTML>`. Можливі дивні речі.
3736

3837
У сучасному HTML ми завжди повинні вказувати `DOCTYPE`.
39-
` ``
4038

4139
## Ширина/висота документа
4240

4341
Теоретично, оскільки кореневим елементом документа є `document.documentElement`, і він охоплює весь вміст, ми можемо виміряти повний розмір документа як `document.documentElement.scrollWidth/scrollHeight`.
4442

4543
Але для цього елемента для всієї сторінки ці властивості не працюють належним чином. У Chrome/Safari/Opera, якщо немає смуги прокрутки, то `documentElement.scrollHeight` може бути навіть меншим, ніж `documentElement.clientHeight`! З точки зору елемента це неможлива ситуація.
4644

47-
Щоб надійно отримати повну висоту документа, ми повинні взяти максимальне з цих властивостей:
45+
Щоб надійно отримати повну висоту документа, ми повинні взяти максимальне значення з цих властивостей:
4846

4947
```js run
5048
let scrollHeight = Math.max(
@@ -62,7 +60,7 @@ alert('Повна висота документа з прокрученою ча
6260

6361
Елементи DOM зберігають свій поточний стан прокрутки у властивостях `scrollLeft/scrollTop`.
6462

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`.
6664

6765
На щастя, нам не потрібно пам’ятати про ці особливості, оскільки прокрутка доступна у спеціальних властивостях `window.pageXOffset/pageYOffset`:
6866

@@ -73,20 +71,17 @@ alert('Поточна прокрутка зліва: ' + window.pageXOffset);
7371

7472
Ці властивості доступні лише для читання.
7573

76-
` ``
77-
smart header="Також доступні як властивості `window` `scrollX` та `scrollY`"
74+
```smart header="Також доступні як властивості `window` `scrollX` та `scrollY`"
7875
З історичних причин обидві властивості існують, але вони однакові:
7976
- `window.pageXOffset` є псевдонімом `window.scrollX`.
8077
- `window.pageYOffset` є псевдонімом `window.scrollY`.
81-
` ``
8278

8379
## Прокрутка: scrollTo, scrollBy, scrollIntoView [#window-scroll]
8480

85-
` ``warn
81+
```warn
8682
Для того, щоб прокручувати сторінку за допомогою JavaScript, її DOM має бути повністю створено.
8783
88-
Наприклад, якщо ми спробуємо прокрутити сторінку за допомогою скрипту в `<head>`, це не спрацює.
89-
` ``
84+
Наприклад, якщо ми спробуємо прокрутити сторінку в коді скрипта розташованого в `<head>`, це не спрацює.
9085
9186
Звичайні елементи можна прокручувати, змінюючи `scrollTop/scrollLeft`.
9287
@@ -117,7 +112,7 @@ smart header="Також доступні як властивості `window` `
117112
118113
Виклик `elem.scrollIntoView(top)` прокручує сторінку таким чином, щоб зробити `elem` видимим. Він має один аргумент:
119114
120-
- Якщо `top=true` (за замовчуванням), то сторінка буде прокручена так, щоб `elem` з’явився у верхній частині вікна. Верхній край елемента буде вирівняний з верхньою частиною вікна.
115+
- Якщо `top=true` (типове значення), то сторінка буде прокручена так, щоб `elem` з’явився у верхній частині вікна. Верхній край елемента буде вирівняний з верхньою частиною вікна.
121116
- Якщо `top=false`, то сторінка прокручується так, щоб `elem` з’явився внизу. Нижній край елемента буде вирівняний з нижньою частиною вікна.
122117
123118
```online
@@ -132,9 +127,9 @@ smart header="Також доступні як властивості `window` `
132127

133128
## Заборона прокручування
134129

135-
Іноді нам потрібно зробити документ «не прокручуваним». Наприклад, коли нам потрібно закрити сторінку великим повідомленням, яке вимагає негайної уваги, і ми хочемо, щоб відвідувач взаємодіяв з цим повідомленням, а не з документом.
130+
Іноді нам потрібно зробити документ "не прокручуваним". Наприклад, щоб закрити сторінку великим повідомленням, яке вимагає негайної уваги, і ми хочемо, щоб відвідувач взаємодіяв з цим повідомленням, а не з документом.
136131

137-
Щоб зробити документ недоступним для прокручування, достатньо встановити `document.body.style.overflow = "hidden"`. Сторінка «завмре» у поточній позиції прокручування.
132+
Щоб зробити документ недоступним для прокручування, достатньо встановити `document.body.style.overflow = "hidden"`. Сторінка "завмре" у поточній позиції прокручування.
138133

139134
```online
140135
Спробуй:

0 commit comments

Comments
 (0)