Получение размеров элемента

Тренажер по работе с HTML DOM на JavaScript для пользователей с начальным и средним уровнем подготовки.

Тренажер JavaScript: Покоряем HTML DOM

В этом разделе вы на практике освоите получение размеров элементов DOM. Каждое задание представляет собой HTML-структуру и JavaScript-код с пропусками. Ваша задача - заполнить пропуски в JavaScript-коде, чтобы получить требуемые размеры элементов и отобразить их на странице. Задания расположены от простого к сложному, начиная с базовых свойств, таких как `offsetWidth` и `offsetHeight`, и заканчивая более продвинутыми методами, такими как `getBoundingClientRect()` и работа с прокруткой."

Список тем

Получение полной ширины элемента

id: 37071_get-element-width

В этом задании вам нужно получить полную ширину элемента `<div>` с идентификатором `element-to-measure`. Полная ширина включает в себя ширину контента, внутренние отступы (padding) и границы (border). Результат должен быть выведен в элемент с id `output`.

CSS
.element {
  width: 200px;
  padding: 20px;
  border: 5px solid black;
  background-color: lightblue;
}
HTML
Восстановить HTML
<div id="element-to-measure" class="element">
  Этот элемент имеет заданные размеры, отступы и границы.
</div>
<div id="output"></div>
JavaScript
const element = document.input__1('element-to-measure');
const width = element.input__2;
document.input__3('output').textContent = 'Ширина элемента: ' + width + 'px';
Для получения полной ширины элемента используйте свойство `offsetWidth`. Это свойство возвращает числовое значение, представляющее ширину элемента в пикселях, включая padding, border и вертикальную полосу прокрутки (если она присутствует и является видимой). Вам нужно получить элемент по его id и затем обратиться к свойству `offsetWidth`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение полной высоты элемента

id: 37071_get-element-height

Аналогично предыдущему заданию, получите полную высоту элемента `<div>` с id `element-to-measure`. Полная высота включает в себя высоту контента, внутренние отступы и границы. Выведите результат в элемент с id `output`.

CSS
.element {
  height: 100px;
  padding: 15px;
  border: 3px solid green;
  background-color: lightcoral;
}
HTML
Восстановить HTML
<div id="element-to-measure" class="element">
  Этот элемент имеет заданные размеры, отступы и границы.
</div>
<div id="output"></div>
JavaScript
const element = document.input__1('element-to-measure');
const height = element.input__2;
document.input__3('output').textContent = 'Высота элемента: ' + height + 'px';
Для получения полной высоты элемента используйте свойство `offsetHeight`. Оно работает аналогично `offsetWidth`, но для высоты. Вам нужно получить элемент и использовать свойство `offsetHeight`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение внутренней ширины элемента (clientWidth)

id: 37071_get-client-width

Теперь получите внутреннюю ширину элемента `<div>` с id `element-to-measure`. Внутренняя ширина включает в себя только ширину контента и внутренние отступы (padding), но исключает границы (border) и полосу прокрутки. Выведите результат в элемент с id `output`.

CSS
.element {
  width: 300px;
  padding: 30px;
  border: 10px solid orange;
  background-color: lightgreen;
  overflow: auto; /* Для возможной полосы прокрутки */
  height: 50px;
}
HTML
Восстановить HTML
<div id="element-to-measure" class="element">
  Этот элемент имеет заданные размеры, отступы и границы, а также возможную полосу прокрутки.
  Очень длинный текст для демонстрации полосы прокрутки.
</div>
<div id="output"></div>
JavaScript
const element = document.input__1('element-to-measure');
const width = element.input__2;
document.input__3('output').textContent = 'Внутренняя ширина элемента: ' + width + 'px';
Для получения внутренней ширины элемента используйте свойство `clientWidth`. Оно отличается от `offsetWidth` тем, что не включает границы и полосу прокрутки. Получите элемент и используйте свойство `clientWidth`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение внутренней высоты элемента (clientHeight)

id: 37071_get-client-height

Получите внутреннюю высоту элемента `<div>` с id `element-to-measure`. Внутренняя высота включает в себя высоту контента и внутренние отступы, но исключает границы и горизонтальную полосу прокрутки. Выведите результат в элемент с id `output`.

CSS
.element {
  height: 150px;
  padding: 25px;
  border: 7px solid purple;
  background-color: lightyellow;
  overflow-x: auto; /* Для возможной горизонтальной полосы прокрутки */
  width: 100px;
}
HTML
Восстановить HTML
<div id="element-to-measure" class="element">
  Этот элемент имеет заданные размеры, отступы и границы, а также возможную горизонтальную полосу прокрутки.
  Очень длинный текст в одну строку для демонстрации горизонтальной полосы прокрутки.
</div>
<div id="output"></div>
JavaScript
const element = document.input__1('element-to-measure');
const height = element.input__2;
document.input__3('output').textContent = 'Внутренняя высота элемента: ' + height + 'px';
Используйте свойство `clientHeight` для получения внутренней высоты элемента. Аналогично `clientWidth`, оно не учитывает границы. Получите элемент и примените свойство `clientHeight`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение размеров контента элемента (scrollWidth)

id: 37071_get-scroll-width

Получите полную ширину контента элемента `<div>` с id `scrollable-element`, включая контент, который не помещается в видимой области из-за прокрутки. Выведите результат в элемент с id `output`.

CSS
.scrollable {
  width: 150px;
  height: 80px;
  border: 2px solid blue;
  overflow: auto;
}
HTML
Восстановить HTML
<div id="scrollable-element" class="scrollable">
  Очень длинный текст, который не помещается в заданную ширину и вызывает полосу прокрутки.
  Это нужно для демонстрации scrollWidth.
</div>
<div id="output"></div>
JavaScript
const element = document.input__1('scrollable-element');
const width = element.input__2;
document.input__3('output').textContent = 'Ширина контента (scrollWidth): ' + width + 'px';
Для получения полной ширины контента, включая скрытую часть из-за прокрутки, используйте свойство `scrollWidth`. Это свойство полезно для элементов с прокруткой. Получите элемент и используйте свойство `scrollWidth`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение высоты контента элемента (scrollHeight)

id: 37071_get-scroll-height

Получите полную высоту контента элемента `<div>` с id `scrollable-element`, включая контент, который не помещается в видимой области по вертикали из-за прокрутки. Выведите результат в элемент с id `output`.

CSS
.scrollable {
  width: 100px;
  height: 60px;
  border: 2px solid red;
  overflow: auto;
}
HTML
Восстановить HTML
<div id="scrollable-element" class="scrollable">
  Очень длинный текст,
  который не помещается в заданную высоту
  и вызывает вертикальную полосу прокрутки.
  Это нужно для демонстрации scrollHeight.
</div>
<div id="output"></div>
JavaScript
const element = document.input__1('scrollable-element');
const height = element.input__2;
document.input__3('output').textContent = 'Высота контента (scrollHeight): ' + height + 'px';
Для получения полной высоты контента, включая скрытую часть по вертикали из-за прокрутки, используйте свойство `scrollHeight`. Аналогично `scrollWidth`, но для высоты. Получите элемент и используйте свойство `scrollHeight`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение позиции элемента относительно окна браузера (getBoundingClientRect)

id: 37071_get-bounding-client-rect

Используйте метод `getBoundingClientRect()` для получения размеров и позиции элемента `<div>` с id `rect-element` относительно видимой области окна браузера. Выведите в элемент `output` значения `top`, `right`, `bottom`, `left`, `width` и `height`.

CSS
.rect {
  width: 100px;
  height: 100px;
  background-color: gold;
  position: absolute;
  top: 50px;
  left: 50px;
}
HTML
Восстановить HTML
<div id="rect-element" class="rect"></div>
<div id="output"></div>
JavaScript
const element = document.input__1('rect-element');
const rect = element.input__2();
let outputText = 'Позиция элемента:\n';
outputText += 'top: ' + rect.input__3 + 'px\n';
outputText += 'right: ' + rect.input__4 + 'px\n';
outputText += 'bottom: ' + rect.input__5 + 'px\n';
outputText += 'left: ' + rect.input__6 + 'px\n';
outputText += 'width: ' + rect.input__7 + 'px\n';
outputText += 'height: ' + rect.input__8 + 'px';
document.input__9('output').textContent = outputText;
Метод `getBoundingClientRect()` возвращает объект, содержащий `top`, `right`, `bottom`, `left`, `width` и `height` свойства, представляющие размеры и позицию элемента относительно viewport. Получите элемент, вызовите метод `getBoundingClientRect()` и извлеките нужные свойства.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение позиции элемента относительно родителя (offsetLeft, offsetTop)

id: 37071_get-offset-position

Получите позицию элемента `<div>` с id `child-element` относительно его родительского элемента с id `parent-element`. Используйте свойства `offsetLeft` и `offsetTop`. Выведите результаты в элемент с id `output`.

CSS
#parent-element {
  width: 300px;
  height: 200px;
  background-color: lightgray;
  position: relative; /* Важно для offsetParent */
  padding: 20px;
}

#child-element {
  width: 100px;
  height: 80px;
  background-color: lightcoral;
  position: absolute;
  top: 30px;
  left: 40px;
}
HTML
Восстановить HTML
<div id="parent-element">
  <div id="child-element"></div>
</div>
<div id="output"></div>
JavaScript
const childElement = document.input__1('child-element');
const offsetX = childElement.input__2;
const offsetY = childElement.input__3;
document.input__4('output').textContent = 'Смещение элемента:\noffsetLeft: ' + offsetX + 'px\noffsetTop: ' + offsetY + 'px';
Свойства `offsetLeft` и `offsetTop` возвращают смещение элемента относительно его `offsetParent` элемента (обычно ближайшего позиционированного предка). В данном случае `parent-element` является `offsetParent` для `child-element`. Получите дочерний элемент и используйте свойства `offsetLeft` и `offsetTop`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение размеров окна браузера (innerWidth, innerHeight)

id: 37071_get-window-inner-dimensions

Получите внутренние размеры окна браузера, то есть размеры видимой области страницы, исключая полосы прокрутки, панели инструментов браузера и т.д. Используйте свойства `innerWidth` и `innerHeight` объекта `window`. Выведите результаты в элемент с id `output`.

HTML
Восстановить HTML
<div id="output"></div>
JavaScript
const width = window.input__1;
const height = window.input__2;
document.input__3('output').textContent = 'Размеры окна браузера:\nВнутренняя ширина: ' + width + 'px\nВнутренняя высота: ' + height + 'px';
Свойства `window.innerWidth` и `window.innerHeight` предоставляют размеры видимой области окна браузера. Обратитесь к объекту `window` и используйте эти свойства.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Получение размеров всего окна браузера (outerWidth, outerHeight)

id: 37071_get-window-outer-dimensions

Получите внешние размеры окна браузера, то есть размеры всего окна, включая полосы прокрутки, панели инструментов браузера и т.д. Используйте свойства `outerWidth` и `outerHeight` объекта `window`. Выведите результаты в элемент с id `output`.

HTML
Восстановить HTML
<div id="output"></div>
JavaScript
const width = window.input__1;
const height = window.input__2;
document.input__3('output').textContent = 'Размеры всего окна браузера:\nВнешняя ширина: ' + width + 'px\nВнешняя высота: ' + height + 'px';
Свойства `window.outerWidth` и `window.outerHeight` предоставляют размеры всего окна браузера. Аналогично предыдущему заданию, обратитесь к объекту `window` и используйте эти свойства.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку
НайтиКурс.Ру