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

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

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

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

Список тем

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

Создайте функцию, которая прокручивает страницу в самое начало. Используйте объект `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 пикселей вниз

Напишите код, который прокручивает страницу вниз на 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-координате.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

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

Измените код из первого задания так, чтобы прокрутка в начало страницы была плавной. Используйте опцию `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 "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()` для этого элемента.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

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

Добавьте плавную прокрутку к предыдущему заданию, используя опцию `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'`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

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

Добавьте обработчик события `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-координаты.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

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

Измените функцию `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`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

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

Напишите функцию, которая прокручивает страницу на 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. Напишите функцию 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"` для плавной прокрутки.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку
НайтиКурс.Ру
Добавить комментарий