Управление прокруткой страницы

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

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

В этом тренажере вы научитесь управлять прокруткой страницы с помощью JavaScript. Вы будете работать с различными свойствами и методами объекта `window` и элементами DOM, чтобы программно изменять положение прокрутки, плавно перемещаться к определенным элементам, а также отслеживать текущее положение прокрутки. Задания охватывают как базовые, так и более продвинутые техники, позволяя вам закрепить знания на практике. Вы будете изменять положение скролла, создавать плавную прокрутку, работать с событиями и многое другое. Помните, что все действия происходят в ограниченном пространстве: ширина максимум 372px, а высота минимум 300px.

Список тем

Прокрутка в начало страницы

id: 37074_scroll-to-top

Создайте функцию, которая прокручивает страницу в самое начало. Используйте объект `window` для изменения положения прокрутки. Страница должна быть прокручена в верхнюю левую точку.

HTML
Восстановить HTML
<div style="height: 2000px;">Длинный контент</div>
JavaScript
function scrollToTop() {
  input__1.scrollTo(input__2, input__3);
}
scrollToTop();
Используйте метод `window.scrollTo(x, y)` или `window.scroll(x, y)`, где x и y - координаты, куда нужно прокрутить страницу. Для прокрутки в начало страницы установите x и y в 0.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Прокрутка на 500 пикселей вниз

id: 37074_scroll-down-500

Напишите код, который прокручивает страницу вниз на 500 пикселей от текущего положения. Используйте свойства `window.scrollX` и `window.scrollY` для получения текущего положения прокрутки.

HTML
Восстановить HTML
<div style="height: 2000px;">Длинный контент</div>
JavaScript
window.scrollTo(window.input__1, window.input__2 + input__3);
Получите текущее положение прокрутки с помощью `window.scrollX` и `window.scrollY`. Затем используйте `window.scrollTo()` или `window.scroll()`, чтобы прокрутить страницу на 500 пикселей вниз, прибавив 500 к текущей Y-координате.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Плавная прокрутка в начало страницы

id: 37074_smooth-scroll-to-top

Измените код из первого задания так, чтобы прокрутка в начало страницы была плавной. Используйте опцию `behavior` метода `scrollTo`.

HTML
Восстановить HTML
<div style="height: 2000px;">Длинный контент</div>
JavaScript
function scrollToTop() {
  window.scrollTo({
    top: input__1,
    left: 0,
    behavior: input__2
  });
}
scrollToTop();
Используйте метод `window.scrollTo()` с объектом в качестве аргумента. В этом объекте укажите свойство `behavior: 'smooth'`, а также координаты `top` и `left`, установленные в 0.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Прокрутка к элементу по ID

id: 37074_scroll-to-element

Создайте функцию, которая прокручивает страницу к элементу с ID "targetElement". Используйте метод `scrollIntoView()` для этого элемента.

HTML
Восстановить HTML
<div style="height: 500px;"></div>
<div id="targetElement">Целевой элемент</div>
<div style="height: 1500px;"></div>
JavaScript
function scrollToElement() {
  const element = document.input__1("targetElement");
  element.input__2();
}
scrollToElement();
Найдите элемент с ID "targetElement" с помощью `document.getElementById()`. Затем вызовите метод `scrollIntoView()` для этого элемента.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Плавная прокрутка к элементу

id: 37074_smooth-scroll-to-element

Добавьте плавную прокрутку к предыдущему заданию, используя опцию `behavior` метода `scrollIntoView()`.

HTML
Восстановить HTML
<div style="height: 500px;"></div>
<div id="targetElement">Целевой элемент</div>
<div style="height: 1500px;"></div>
JavaScript
function scrollToElement() {
  const element = document.getElementById("targetElement");
  element.scrollIntoView({ input__1: input__2 });
}
scrollToElement();
Вызовите метод `scrollIntoView()` с объектом в качестве аргумента. В этом объекте укажите свойство `behavior: 'smooth'`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Отслеживание события прокрутки

id: 37074_scroll-event

Добавьте обработчик события `scroll` к объекту `window`. Внутри обработчика выведите в консоль текущую Y-координату прокрутки (`window.scrollY`).

HTML
Восстановить HTML
<div style="height: 2000px;">Длинный контент</div>
JavaScript
window.addEventListener(input__1, function() {
  console.log(input__2.input__3);
});
Используйте метод `window.addEventListener()` для добавления обработчика события `scroll`. Внутри функции-обработчика используйте `console.log(window.scrollY)` для вывода Y-координаты.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Прокрутка к элементу с учетом отступа

id: 37074_scroll-to-element-with-offset

Измените функцию `scrollToElement` из задания 4 так, чтобы прокрутка останавливалась на 100 пикселей выше целевого элемента. Используйте метод getBoundingClientRect()

HTML
Восстановить HTML
<div style="height: 500px;"></div>
<div id="targetElement">Целевой элемент</div>
<div style="height: 1500px;"></div>
JavaScript
function scrollToElement() {
  const element = document.getElementById("targetElement");
  const y = element.input__1().top + window.input__2 - input__3;
  window.scrollTo(0, y);
}
scrollToElement();
Используйте `document.getElementById()` чтобы получить целевой элемент. Вызовите `getBoundingClientRect()` у целевого элемента, чтобы получить его позицию относительно окна просмотра. Используйте `window.scrollTo()` чтобы прокрутить к позиции элемента, вычтя 100 из `top`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Прокрутка на определенное количество пикселей относительно элемента

id: 37074_scroll-by-relative-to-element

Напишите функцию, которая прокручивает страницу на 200 пикселей вниз относительно текущего положения элемента с id="myDiv".

HTML
Восстановить HTML
<div style="height: 500px;"></div>
<div id="myDiv" style="margin-top: 200px;">Мой элемент</div>
<div style="height: 1500px;"></div>
JavaScript
function scrollRelativeToElement() {
  const element = document.getElementById(input__1);
  const offset = element.getBoundingClientRect().top + input__2;
  window.scrollBy(0, offset);
}
scrollRelativeToElement();
1. Найдите элемент с id="myDiv" с помощью `document.getElementById()`. 2. Используйте `getBoundingClientRect().top`, чтобы получить текущее положение элемента относительно видимой области. 3. Прибавьте к полученному значению 200. 4. Используйте `window.scrollBy()` или `window.scroll()`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку

Прокрутка до определенной секции

id: 37074_scroll-to-section

Имеется несколько секций на странице, каждая с уникальным id. Напишите функцию scroll, которая принимает id секции в качестве аргумента и прокручивает страницу до этой секции. Добавьте плавность.

CSS
section { border: 1px solid black; padding: 20px; }
HTML
Восстановить HTML
<div style="height: 500px;"></div> <section id="section1">Секция 1</section> <div style="height: 500px;"></div> <section id="section2">Секция 2</section> <div style="height: 500px;"></div> <section id="section3">Секция 3</section> <div style="height: 500px;"></div>
JavaScript
function scroll(sectionId) {
  const element = document.input__1(input__2);
  element.input__3({ behavior: "smooth" });
}
scroll("section2");
Функция должна принимать ID элемента. Внутри функции используйте `document.getElementById()` для получения элемента по ID. Используйте `scrollIntoView()` с опцией `behavior: "smooth"` для плавной прокрутки.
Заполнить ответами все поля
Результат
Лог
Выполнить
Показать подсказку
НайтиКурс.Ру