Skip to content

Commit 6d68d05

Browse files
committed
fix typos
1 parent 9edf857 commit 6d68d05

1 file changed

Lines changed: 22 additions & 22 deletions

File tree

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

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Размеры и прокрутка элементов
22

3-
Существует множество JavaScript-свойтв, которые позволяют считывать информацию об элементе: ширину, высоту и другие геометрические характеристики.
3+
Существует множество JavaScript-свойcтв, которые позволяют считывать информацию об элементе: ширину, высоту и другие геометрические характеристики.
44

5-
Они часто требуются, когда нам нужно передвигать или позиционировать элементы с помощью JavaScript, для того, чтобы правильно вычислить координаты.
5+
Они часто требуются, когда нам нужно передвигать или позиционировать элементы с помощью JavaScript для того, чтобы правильно вычислять координаты.
66

77

88
## Простой пример
@@ -33,13 +33,13 @@
3333
Вы можете [открыть этот документ в песочнице](sandbox:metric).
3434

3535
```smart header="Внимание, полоса прокрутки"
36-
В иллюстрации выше намеренно продемонстрирован самый сложный и полный случай, когда у элемента есть ещё и полоса прокрутки. Некоторые браузеры (не все) оставляют место для неё забирая его у области отведённой для содержимого.
36+
В иллюстрации выше намеренно продемонстрирован самый сложный и полный случай, когда у элемента есть ещё и полоса прокрутки. Некоторые браузеры (не все) оставляют место для неё, забирая его у области отведённой для содержимого.
3737
3838
Таким образом, без учёта полосы прокрутки ширина области содержимого будет `300px`, но если предположить, что ширина полосы прокрутки равна `16px` (её точное значение зависит от устройства и браузера), тогда остаётся только `300 - 16 = 284px` и мы должны это учитывать. Вот почему примеры в этой главе даны с полосой прокрутки. Если её не будет, то вычисления будут немного проще.
3939
```
4040

4141
```smart header="CSS-свойство `padding-bottom` может быть заполнено текстом"
42-
Обычно внутренние отступы изображены пустыми на иллюстрациях, но если элемент содержит много текста, они могут перекрывать друг друга, в этом случае браузеры отображают такой текст "перекрывающим" `нижний внутренний отступ` (padding-bottom). Вы можете наблюдать это в примерах. Несмотря на это, отступы есть, пока не указано иное.
42+
Обычно внутренние отступы изображены пустыми на иллюстрациях, но если элемент содержит много текста, они могут перекрывать друг друга. В этом случае браузеры отображают такой текст "перекрывающим" `нижний внутренний отступ` (padding-bottom). Вы можете наблюдать это в примерах. Несмотря на это, отступы есть, если не указано иное.
4343
```
4444
4545
## Метрики
@@ -76,7 +76,7 @@
7676
</main>
7777
<script>
7878
alert(example.offsetParent.id); // main
79-
alert(example.offsetLeft); // 180 (note: a number, not a string "180px")
79+
alert(example.offsetLeft); // 180 (обратите внимание: число, а не строка "180px")
8080
alert(example.offsetTop); // 180
8181
</script>
8282
```
@@ -86,7 +86,7 @@
8686

8787
Существует несколько частных случаев, когда `offsetParent` равно `null`:
8888

89-
1. Для скрытых элементов (с CSS-свойством `display:none`, либо когда его нет в документе).
89+
1. Для скрытых элементов (с CSS-свойством `display:none`, либо, когда его нет в документе).
9090
2. Для элементов `<body>` и `<html>`.
9191
3. Для элементов с `position:fixed`.
9292

@@ -134,33 +134,33 @@ function isHidden(elem) {
134134

135135
![](metric-client-left-top.png)
136136

137-
...На на самом деле -- оно вовсе не рамки, а отступ внутренней части элемента от внешней.
137+
...На на самом деле -- это вовсе не рамки, а отступ внутренней части элемента от внешней.
138138

139139
В чём же разница?
140140

141-
Она возникает, когда документ располагается справа налево (операционная система на арабском языке или иврите). Полоса прокрутки в этом случае находится слева, и тогда свойство `clientLeft` включает в себя еще и ширину полосы прокрутки.
141+
Она возникает, когда документ располагается справа налево (операционная система на арабском языке или иврите). Полоса прокрутки в этом случае находится слева, и тогда свойство `clientLeft` включает в себя ещё и ширину полосы прокрутки.
142142

143143
В этом случае, `clientLeft` будет равно `25`, но с прокруткой -- `25 + 16 = 41`:
144144

145145
![](metric-client-left-top-rtl.png)
146146

147147
## Свойства: clientWidth/Height
148148

149-
Эти свойства -- размер элемента внутри рамок border.
149+
Эти свойства -- размер области внутри рамок элемента.
150150

151-
Они включают в себя ширину содержимого width вместе с полями padding, но без прокрутки:
151+
Они включают в себя ширину содержимого width вместе с полями внутреннего отступа, но без прокрутки:
152152

153153
![](metric-client-width-height.png)
154154

155155
На рисунке выше посмотрим вначале на `clientHeight`: её посчитать проще всего. Горизонтально прокрутки нет, так что это в точности то, что внутри рамок: CSS-высота `200px` плюс верхнее и нижнее поля (`2 * 20px`), итого `240px`.
156156

157157
Теперь `clientWidth` -- ширина содержимого здесь равна не `300px`, а `284px`, т.к. `16px` отведено для полосы прокрутки. Таким образом: `284px` плюс левый и правый отступы -- всего `324px`.
158158

159-
**Если нет внутренних отступов, то `clientWidth/Height` в точности равны размеру области содержимого, внутри рамок и полосы прокрутки (если она есть).**
159+
**Если нет внутренних отступов, то `clientWidth/Height` в точности равны размеру области содержимого внутри рамок и полосы прокрутки (если она есть).**
160160

161161
![](metric-client-width-nopadding.png)
162162

163-
Поэтому, в тех случаях, когда мы точно знаем, что отступов нет, можно использовать `clientWidth/clientHeight` для получения размеров внутренней области содержимого.
163+
Поэтому в тех случаях, когда мы точно знаем, что отступов нет, можно использовать `clientWidth/clientHeight` для получения размеров внутренней области содержимого.
164164

165165
## Свойства: scrollWidth/Height
166166

@@ -201,8 +201,8 @@ element.style.height = `${element.scrollHeight}px`;
201201

202202
Другими словами, свойство `scrollTop` -- это "сколько уже прокручено вверх".
203203

204-
````smart header="`scrollLeft/scrollTop` можно изменять"
205-
В отличие от большинства свойств, которые доступны только для чтения, значения `scrollLeft/scrollTop` можно изменить, и браузер выполнит прокрутку элемента..
204+
````smart header="`Свойства scrollLeft/scrollTop` можно изменять"
205+
В отличие от большинства свойств, которые доступны только для чтения, значения `scrollLeft/scrollTop` можно изменять, и браузер выполнит прокрутку элемента..
206206

207207
```online
208208
При клике на следующий элемент будет выполняться код `elem.scrollTop += 10`. Поэтому он будет прокручиваться на `10px` вниз.
@@ -219,7 +219,7 @@ element.style.height = `${element.scrollHeight}px`;
219219
220220
Но как мы знаем из главы <info:styles-and-classes>, CSS-высоту и ширину можно извлечь, используя `getComputedStyle`.
221221
222-
Не лучше ли получать ширину так, вместо метрик?
222+
Не лучше ли так получать ширину вместо метрик?
223223
224224
```js run
225225
let elem = document.body;
@@ -230,7 +230,7 @@ alert( getComputedStyle(elem).width ); // show CSS width for elem
230230
Почему мы должны использовать свойства метрик вместо этого? На это есть две причины:
231231
232232
1. Во-первых, CSS-свойства width/height зависят от другого свойства -- `box-sizing` которое определяет, "что такое", собственно, эти CSS-ширина и высота. Получается, что изменение `box-sizing`, к примеру, для более удобной вёрстки, сломает такой JavaScript.
233-
2. Во-вторых, в CSS свойства `width/height` могут быть равны `auto`, например, для инлайн-элемента:
233+
2. Во-вторых, в CSS -- свойства `width/height` могут быть равны `auto`, например, для инлайн-элемента:
234234
235235
```html run
236236
<span id="elem">Привет!</span>
@@ -242,11 +242,11 @@ alert( getComputedStyle(elem).width ); // show CSS width for elem
242242
</script>
243243
```
244244
245-
Конечно, с точки зрения CSS `width:auto` is perfectly normal, – совершенно нормально, но нам-то в JavaScript нужен конкретный размер в `px`, который мы могли бы использовать для вычислений. Получается, что в данном случае ширина width из CSS вообще бесполезна.
245+
Конечно, с точки зрения CSS `width:auto` – совершенно нормально, но нам-то в JavaScript нужен конкретный размер в `px`, который мы могли бы использовать для вычислений. Получается, что в данном случае ширина width из CSS вообще бесполезна.
246246
247-
Есть и ещё одна причина: Полоса прокрутки. Бывает без полосы прокрутки код работает прекрасно, но стоит ей появиться, как начинают появляться баги. Так происходит потому, что полоса прокрутки "отъедает" место от области внутреннего содежимого в некоторых браузерах. Таким образом, реальная ширина содержимого *меньше* CSS-ширины. И это учитывают свойства `clientWidth/clientHeight`.
247+
Есть и ещё одна причина: полоса прокрутки. Бывает без полосы прокрутки код работает прекрасно, но стоит ей появиться, как начинают появляться баги. Так происходит потому, что полоса прокрутки "отъедает" место от области внутреннего содежимого в некоторых браузерах. Таким образом, реальная ширина содержимого *меньше* CSS-ширины. Как раз это и учитывают свойства `clientWidth/clientHeight`.
248248
249-
...Но с `getComputedStyle(elem).width` ситуация иная. Некоторые браузеры (например, Chrome) возвращают реальную внутреннюю ширину, минус ширину полосы прокрутки, а некоторые (например, Firefox) -- именно CSS-свойство (игнорируя полосу прокрутки). Эти кросс-браузерные отличия – ещё один повод не использовать `getComputedStyle`, а использовать свойства-метрики.
249+
...Но с `getComputedStyle(elem).width` ситуация иная. Некоторые браузеры (например, Chrome) возвращают реальную внутреннюю ширину с вычетом ширины полосы прокрутки, а некоторые (например, Firefox) -- именно CSS-свойство (игнорируя полосу прокрутки). Эти кросс-браузерные отличия – ещё один повод не использовать `getComputedStyle`, а использовать свойства-метрики.
250250
251251
```online
252252
Если ваш браузер показывает полосу прокрутки (например, под Windows почти все браузеры так делают), то вы можете протестировать это сами, нажав на кнопку в ифрейме ниже.
@@ -265,11 +265,11 @@ alert( getComputedStyle(elem).width ); // show CSS width for elem
265265
У элементов есть следующие метрики:
266266
267267
- `offsetParent` -- ближайший CSS-спозиционированный родитель или `td`, `th`, `table`, `body`.
268-
- `offsetLeft/offsetTop` -- позиция в пикселях верхнего левого угла, относительно `offsetParent`.
268+
- `offsetLeft/offsetTop` -- позиция в пикселях верхнего-левого угла, относительно `offsetParent`.
269269
- `offsetWidth/offsetHeight` -- "внешняя" ширина/высота элемента, включая рамки.
270-
- `clientLeft/clientTop` -- расстояние от верхнего-левого внешнего угла до верхнего-левого внутренного угла элемента. Для операционных систем с ориентацией слева на право, эти свойства равны ширинам левой/верхней рамки. Если же вертикальная полоса прокрутки находится слева, то `clientLeft` включает в своё значение её ширину.
270+
- `clientLeft/clientTop` -- расстояние от верхнего-левого внешнего угла до верхнего-левого внутренного угла элемента. Для операционных систем с ориентацией слева на право, эти свойства равны ширинам левой/верхней рамки. Если же вертикальная полоса прокрутки находится не справа, а слева, то `clientLeft` включает в своё значение её ширину.
271271
- `clientWidth/clientHeight` -- ширина/высота содержимого вместе с полями внутреннего отступа, но без полосы прокрутки.
272-
- `scrollWidth/scrollHeight` -- ширина/высота содержимого, включая прокручиваемую область. Включает в себя внутренние отступы и не включает полосы прокрутки.
272+
- `scrollWidth/scrollHeight` -- ширина/высота содержимого, включая прокручиваемую область. Включает в себя внутренние отступы и не включает полосу прокрутки.
273273
- `scrollLeft/scrollTop` -- ширина/высота прокрученной части элемента, считается от верхнего левого угла.
274274
275275
Все свойства, доступны только для чтения, кроме `scrollLeft/scrollTop`. Изменение этих свойств заставляет браузер прокручивать элемент.

0 commit comments

Comments
 (0)