169 похожих чатов

Привет, как то можно добавить анимацию прокрутки страницы. Есть кнопка,

которая отсылает к определённой координате через scrollTo, но телепортирует моментально, а хочется, чтобы оно как бы плавно слайдило туда автоматически. Это с CSS как-то придумывать надо, или в JS работать?

1 ответов

3 просмотра

//Получаем коллекцию узлов для нашей анимации. const allAnimations = document.querySelectorAll('.animations'); function getScrollLeft() { return window.pageXOffset || document.documentElement.scrollLeft; } function getScrollTop() { return window.pageYOffset || document.documentElement.scrollTop; } function isCheckLength(arr, num) { return arr.length > num ? true : false; } function performAnimationWhenScrolling() { //Если длина массива существует. if (isCheckLength(allAnimations, 0)) allArr(allAnimations, 9); //Если длина массива отсутствует. else return } function allArr(NodeList, NodeListPart) { NodeList.forEach(element => { const heightElement = element.offsetHeight; const animationsOffset = offset(element).top; //Часть страницы, показанная на экране, и которую мы видим, указываем числом, допустим 3 const part = NodeListPart; const point = window.innerHeight - heightElement / part; if ((pageYOffset > animationsOffset - point) && (pageYOffset < animationsOffset + heightElement)) element.classList.add('anim'); else return; }); } function offset(element) { //Метод Element.getBoundingClientRect() возвращает размер элемента и его позицию относительно viewport. const partPage = element.getBoundingClientRect(); return { left: partPage['left'] + getScrollLeft(), top: partPage['top'] + getScrollTop(), } } window.addEventListener('scroll', performAnimationWhenScrolling) performAnimationWhenScrolling(); const btnExample = document.querySelectorAll('.btn-example'); const animList = document.querySelectorAll('.anim'); btnExample.forEach(element => { element.addEventListener('click', function () { allAnimations.forEach(element => { if(element.classList.contains('anim')) element.classList.remove('anim'); }); setTimeout(() => performAnimationWhenScrolling(), 1000); }) });

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
11
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
это группа токсиков или тех кто помогает?
Ибрагим
9
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
8
мы пытаемся подменить функцию, которая имеет меньше инструкций относительно функции, которой подменяем. https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfun...
Óðinn
6
У кого-нибудь есть под рукой функция кодирования юникода, которая из фразы На русском сделает \u041d\u0430\u0020\u0440\u0443\u0441\u0441\u043a\u043e\u043c ?
Daniil Smolyakov
7
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Карта сайта