January 1, 2023
Появление элементов при скролле
Подписывайтесь мой Telegram и VK
Demo
Делаем эффект появления контента при скролле.
HTML
<section> <article class="anim left"> <h1>Заголовок 1</h1> <p>Интересный роль дальнейших количественный позиций, условий. Разработке собой проверки рамки условий активизации. Также в формировании модель намеченных подготовки заданий активности организации развития. Административных плановых же оценить позволяет дальнейших реализация развития. Обучения реализации таким сфера нашей значение реализации количественный сложившаяся важны.</p> </article> </section> <section> <article class="anim right"> <h1>Заголовок 2</h1> <p>Высшего повседневная проверки по практика важные форм занимаемых административных высшего собой формировании соображения сфера также требуют структура рост по эксперимент постоянный дальнейших в в организации формировании форм условий задания реализации нашей активизации. Эксперимент административных направлений в задач. Высшего финансовых ж.</p> </article> </section> <section> <article class="anim custom"> <h1>Заголовок 3</h1> <p>Деятельности позволяет и условий особенности условий также высшего соответствующий кадров нашей собой существенных прогрессивного и количественный развития. Порядка, новая собой соответствующий задания деятельности сфера идейные играет структура эксперимент высшего рамки играет направлений практика сфера деятельности и нашей оценить деятельности образо.</p> </article> </section>
Добавляем кастомные классы элементам, которые будут появляться когда мы доскролим до его. В нашем случае это будут: anim, left, right, custom
anim – как будет отображаться элемент, когда он появиться. Тут же и будет задана плавность анимации.
left – элемент будет появляться слево
right – элемент будет появляться справа
custom – элемент будет появляться скейлом (увеличиваться)
CSS
.anim{ transition: transform 1s, opacity 1s; } .left{ transform: translateX(-200px); opacity: 0; } .right{ transform: translateX(200px); opacity: 0; } .custom{ transform: scale(0.1); opacity: 0; }
JS
window.addEventListener('DOMContentLoaded', () => { function onEntry (entry, getClass){ entry.forEach( (change)=>{ if(change.isIntersecting) { change.target.classList.remove(getClass); change.target.classList.add('animated'); } }); } function startAnimation(getClass) { const elements = document.querySelectorAll(`.${getClass}`) elements.forEach(element => { let observer = new IntersectionObserver((e)=>{ onEntry(e, getClass); }, {threshold:[0.7]}); observer.observe( element ); }); } startAnimation("left"); startAnimation("right"); startAnimation("custom"); });
startAnimation – Функция принимает название класса элементов, которые будут появляться.
onEntry – функция принимает элемент и название элемента, который удалит.
Подписывайтесь мой Telegram и VK