#javascript #html #scroll #viewport #aos.js
#javascript #HTML #прокрутка #область просмотра #aos.js
Вопрос:
У меня есть вертикальное слайд-шоу, которое прокручивается / прилипает к следующей панели при прокрутке пользователем. Желаемый эффект https://www.tesla.com но я думал, что смогу добиться этого с помощью CSS (пример ниже).
Пример 1: https: //codepen.io/мой/ручка/poNrVdO
Проблема в том, что я хотел бы добавить класс, чтобы я мог исчезать в тексте, когда следующая панель становится «активной», и я не уверен, каков наилучший подход. Из-за структуры, в которую это входит, решение, отличное от jQuery, было бы предпочтительнее. Я пытался использовать http://dbrekalo.github.io/whenInViewport / но не могу заставить это играть в мяч в данный момент.
import * as whenInViewport from "https://cdn.skypack.dev/when-in-viewport@2.0.4";
var WhenInViewport = window.WhenInViewport;
var elements = Array.prototype.slice.call(
document.getElementsByClassName("slideshow__panel")
);
elements.forEach(function (element) {
new WhenInViewport(element, function (elementInViewport) {
elementInViewport.classList.add("inViewport");
});
});
Обновить
JS, который я пытался использовать, будет только добавлять класс, а не переключать (добавлять / удалять), когда элементы вводятся / покидают область просмотра. Поэтому я решил попробовать несколько других вариантов. Раньше я использовал AOS (анимацию при прокрутке), но с этим тоже возникают проблемы…
Пример 2: https://codepen.io/мой/ручка/XWNavaO
Я думаю, что это делается для overflow-y: auto
того, что требуется snap-scroll
для работы. Может ли кто-нибудь дать совет по этому поводу, или мне лучше отказаться от snap scroll — поскольку это больше хлопот, чем того стоит?
Комментарии:
1. Проверьте intersection observer
2. @cloned это довольно аккуратно! Я сделал быструю версию здесь: codepen.io/moy/pen/poNrVdO кажется, работает хорошо! Следующий шаг — посмотреть, есть ли способ удалить и добавить другой класс, чтобы я мог использовать другую анимацию, когда содержимое покидает область просмотра…
3. На самом деле только что обновлено, поэтому он делает это, но иногда текст не исчезает, поэтому я предполагаю, что он где-то «висит» или, может быть, пытается вычислить слишком много и пропускается? Возможно, лучший способ написания скрипта!
4. вероятно, вам нужны дополнительные параметры для пересечения элемента. Например, вы можете сделать это на 25% и 75%… а затем выясните, покидает ли он область просмотра или входит в нее (сверху или снизу).