
В этом тренажере вы попрактикуетесь в создании плавной прокрутки к элементам на странице с помощью JavaScript. Вы будете работать с различными HTML-структурами и применять JavaScript для реализации прокрутки к указанным якорям или элементам. Задания охватывают различные сценарии, от простых случаев до более сложных, с использованием разных подходов и методов. Вы научитесь находить элементы, определять их положение на странице и анимировать прокрутку, делая взаимодействие с вашими веб-страницами более удобным и приятным для пользователя.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Прокрутка к якорю
Реализуйте плавную прокрутку к якорю `#section2` при клике на ссылку. Используйте JavaScript, чтобы обработать событие клика и выполнить прокрутку.
section { height: 500px; margin-bottom: 20px; border: 1px solid #ccc; }
<a href="#section2">Перейти к Секции 2</a>
<section id="section1">Секция 1</section>
<section id="section2">Секция 2</section>
<section id="section3">Секция 3</section>
document.querySelector('input__1').addEventListener('input__2', function(event) {
event.preventDefault();
const targetElement = document.querySelector(input__3);
targetElement.input__4({ behavior: input__5 });
});
Прокрутка к элементу по ID
Создайте кнопку, при нажатии на которую будет происходить плавная прокрутка к элементу с ID `targetElement`.
div { height: 600px; margin-bottom: 20px; border: 1px solid #ccc; }
#targetElement { background-color: lightblue; }
<button id="scrollButton">Прокрутить</button>
<div>Блок 1</div>
<div id="targetElement">Целевой элемент</div>
<div>Блок 3</div>
const scrollButton = document.getElementById(input__1);
scrollButton.addEventListener('click', () => {
const target = document.input__2('targetElement');
target.scrollIntoView({ behavior: input__3 });
});
Прокрутка с использованием offset
Сделайте плавную прокрутку к элементу с классом `target-section`, но с отступом сверху в 100 пикселей.
.target-section { height: 400px; margin-top: 200px; border: 1px solid #ccc; background-color: lightgreen; }
<button id="offsetButton">Прокрутить с отступом</button>
<div style="height: 800px;"></div>
<div class="target-section">Целевая секция</div>
document.getElementById('offsetButton').addEventListener('click', () => {
const element = document.querySelector(input__1);
const offset = input__2;
const bodyRect = document.body.getBoundingClientRect().top;
const elementRect = element.getBoundingClientRect().top;
const elementPosition = elementRect - bodyRect;
const offsetPosition = elementPosition - offset;
window.scrollTo({
top: input__3,
behavior: 'smooth'
});
});
Прокрутка к изображению
При клике на кнопку прокрутите страницу к изображению с классом "gallery-image".
.gallery-image { margin-top: 800px; display: block; }
<button id="scrollToImageBtn">Прокрутить к изображению</button>
<img src="https://naytikurs.ru/img/1.png" class="gallery-image" alt="Image">
document.getElementById(input__1).addEventListener('click', function() {
const image = document.querySelector(input__2);
input__3.scrollIntoView({ behavior: input__4 });
});
Прокрутка к следующей секции
Реализуйте плавную прокрутку к следующей секции при клике на текущую секцию. Секции имеют класс `section`.
.section { height: 400px; margin-bottom: 20px; border: 1px solid #ccc; cursor: pointer; }
<div class="section">Секция 1</div>
<div class="section">Секция 2</div>
<div class="section">Секция 3</div>
const sections = document.querySelectorAll(input__1);
sections.forEach(section => {
section.addEventListener('click', () => {
const nextSection = section.input__2;
if (nextSection) {
nextSection.scrollIntoView({ behavior: input__3 });
}
});
});
Прокрутка к началу страницы
Добавьте кнопку, при нажатии на которую страница плавно прокручивается к началу.
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><button id="backToTop">Наверх</button>
<div style="height: 1500px;"></div>
document.getElementById('backToTop').addEventListener(input__1, () => {
window.scrollTo({
top: input__2,
behavior: input__3
});
});
Прокрутка к элементу, если он не виден
Прокрутите к элементу с ID `hiddenElement` только в том случае, если он не виден в области просмотра.
#hiddenElement { margin-top: 1500px; }
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><button id="scrollIfHidden">Прокрутить, если скрыт</button>
<div id="hiddenElement">Скрытый элемент</div>
document.getElementById('scrollIfHidden').addEventListener('click', () => {
const element = document.getElementById('hiddenElement');
const rect = element.getBoundingClientRect();
if (input__1 < 0 || rect.top >= input__2) {
element.scrollIntoView({ behavior: 'smooth' });
}
});
Прокрутка по вертикали и горизонтали
Сделайте плавную прокрутку к элементу с классом `.target`, учитывая как вертикальное, так и горизонтальное смещение. Элемент находится далеко справа и внизу.
.container { width: 2000px; height: 1500px; position: relative; }
.target { position: absolute; bottom: 100px; right: 100px; background-color: yellow; }
<button id="scrollBoth">Прокрутить</button>
<div class="container">
<div class="target">Цель</div>
</div>
document.getElementById('scrollBoth').addEventListener('click', () => {
const element = document.querySelector('.target');
const rect = element.getBoundingClientRect();
window.scrollBy({
left: input__1,
top: input__2,
behavior: 'smooth'
});
});
Прокрутка к динамически созданному элементу
Создайте новый элемент (div) с текстом "Новый элемент" и добавьте его в конец `body`. Затем сделайте плавную прокрутку к этому новому элементу.
<button id="createAndScroll">Создать и прокрутить</button>
document.getElementById('createAndScroll').addEventListener('click', () => {
const newElement = document.input__1('div');
newElement.textContent = input__2;
document.body.input__3(newElement);
newElement.scrollIntoView({ behavior: 'smooth' });
});