|
57 | 57 |
|
58 | 58 | В свойстве `offsetParent` находится предок элемента, который используется внутри браузера для вычисления координат при рендеринге. |
59 | 59 |
|
60 | | -То есть, ближайший предок, который удовлетворяет следующим условиям: |
| 60 | +То есть ближайший предок, который удовлетворяет следующим условиям: |
61 | 61 |
|
62 | 62 | 1. Является CSS-позиционированным (CSS-свойство `position` равно `absolute`, `relative`, `fixed` или `sticky`), |
63 | 63 | 2. или `<td>`, `<th>`, `<table>`, |
64 | 64 | 3. или `<body>`. |
65 | 65 |
|
66 | | -Свойства `offsetLeft/offsetTop` содержат координаты x/y относительно верхнего левого угла `offsetParent`. |
| 66 | +Свойства `offsetLeft/offsetTop` содержат координаты x/y верхнего левого угла элемента относительно `offsetParent`. |
67 | 67 |
|
68 | | -В примере ниже внутренний `<div>` имеет элемент `<main>` в качестве `offsetParent`, а свойства `offsetLeft/offsetTop` являются сдвигами относительно верхнего левого угла (`180`): |
| 68 | +В примере ниже внутренний `<div>` имеет элемент `<main>` в качестве `offsetParent`, а свойства `offsetLeft/offsetTop` являются сдвигами его верхнего левого угла (`180`) относительно `offsetParent`: |
69 | 69 |
|
70 | 70 | ```html run height=10 |
71 | 71 | <main style="position: relative" id="main"> |
@@ -148,7 +148,7 @@ function isHidden(elem) { |
148 | 148 |
|
149 | 149 | Эти свойства -- размер области внутри рамок элемента. |
150 | 150 |
|
151 | | -Они включают в себя ширину области содержимого вместе с внутренними отступами `padding`, но без прокрутки: |
| 151 | +Они включают в себя ширину/высоту области содержимого вместе с внутренними отступами `padding`, но без прокрутки: |
152 | 152 |
|
153 | 153 |  |
154 | 154 |
|
@@ -245,7 +245,7 @@ alert( getComputedStyle(elem).width ); // показывает CSS-ширину |
245 | 245 |
|
246 | 246 | Конечно, с точки зрения CSS `width:auto` – совершенно нормально, но нам-то в JavaScript нужен конкретный размер в `px`, который мы могли бы использовать для вычислений. Получается, что в данном случае ширина из CSS вообще бесполезна. |
247 | 247 |
|
248 | | -Есть и ещё одна причина: полоса прокрутки. Бывает, без полосы прокрутки код работает прекрасно, но стоит ей появиться, как начинают проявляться баги. Так происходит потому, что полоса прокрутки "отъедает" место от области внутреннего содержимого в некоторых браузерах. Таким образом, реальная ширина содержимого *меньше* CSS-ширины. Как раз это и учитывают свойства `clientWidth/clientHeight`. |
| 248 | +Есть и ещё одна причина: полоса прокрутки. Бывает, без полосы прокрутки код работает прекрасно, но стоит ей появиться, как начинают проявляться баги. Так происходит потому что полоса прокрутки "отъедает" место от области внутреннего содержимого в некоторых браузерах. Таким образом, реальная ширина содержимого *меньше* CSS-ширины. Как раз это и учитывают свойства `clientWidth/clientHeight`. |
249 | 249 |
|
250 | 250 | ...Но с `getComputedStyle(elem).width` ситуация иная. Некоторые браузеры (например, Chrome) возвращают реальную внутреннюю ширину с вычетом ширины полосы прокрутки, а некоторые (например, Firefox) -- именно CSS-свойство (игнорируя полосу прокрутки). Эти кроссбраузерные отличия – ещё один повод не использовать `getComputedStyle`, а использовать свойства-метрики. |
251 | 251 |
|
|
0 commit comments