Как можно достичь плавного изменения фиксированного контента при прокрутке, как в данном примере?

Как я могу реализовать эффект плавного изменения текста и изображения при прокрутке блока, похожего на блок на сайте https://www.apple.com/airpods-pro/? Я хочу, чтобы блок оставался зафиксированным, а при скроллинге менялись только текст и изображение с использованием эффектов opacity и transform: matrix. У меня есть следующая структура HTML:

```html
<div class="section-scroll">
   	<div class="content">
   		<p>Описание блока #1</p>
   		<img src="slide1.jpg">
   	</div>
   	<div class="content">
   		<p>Описание блока #2</p>
   		<img src="slide2.jpg">
   	</div>
</div>
```

Я хочу, чтобы только первый блок `.content` отображался изначально, а второй блок оставался скрытым. При скроллинге вниз первый блок постепенно затухает (изменяется `opacity: 0`), а второй блок начинает появляться (изменяется `opacity: 1`). Также при скроллинге используется эффект `transform: matrix`, чтобы создать впечатление появления текста снизу (или сверху, в зависимости от скроллинга). Можете ли вы помочь с реализацией этого эффекта с использованием JavaScript? Спасибо!
Изображение к вопросу
  • 12 ноября 2023 г. 13:48
Ответы на вопрос 2
Для достижения плавного изменения фиксированного контента при прокрутке, вы можете использовать JavaScript вместе с CSS анимациями и обработчиком события прокрутки. Вот пример того, как это можно реализовать:

HTML:
```html
<div class="section-scroll">
    <div class="content">
        <p>Описание блока #1</p>
        <img src="slide1.jpg">
    </div>
    <div class="content">
        <p>Описание блока #2</p>
        <img src="slide2.jpg">
    </div>
</div>
```

CSS:
```css
.section-scroll {
    height: 100vh; /* установите желаемую высоту */
    overflow: auto;
    position: relative;
}

.content {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    transition: opacity 0.5s;
}

.content.show {
    opacity: 1;
}

.content.hide {
    opacity: 0;
}

.content h2 {
    /* добавьте стили по желанию */
    transform: translateY(50px); /* начальное положение текста: перед скроллом */
}

.content.show h2 {
    transform: translateY(0); /* конечное положение текста: после скролла */
}
```

JavaScript:
```javascript
var sectionScroll = document.querySelector('.section-scroll');
var contents = Array.from(document.querySelectorAll('.content'));

function handleScroll() {
    var scrollPercentage = sectionScroll.scrollTop / (sectionScroll.scrollHeight - sectionScroll.offsetHeight);

    if (scrollPercentage < 0.5) {
        contents[0].classList.add('show');
        contents[0].classList.remove('hide');
        contents[1].classList.add('hide');
    } else {
        contents[1].classList.add('show');
        contents[1].classList.remove('hide');
        contents[0].classList.add('hide');
    }

    contents[0].querySelector('p').style.transform = 'translateY(' + (100 - scrollPercentage * 200) + '%)';
    contents[1].querySelector('p').style.transform = 'translateY(' + (100 - (1 - scrollPercentage) * 200) + '%)';
}

sectionScroll.addEventListener('scroll', handleScroll);
```

В этом примере мы добавляем обработчик события прокрутки к контейнеру `.section-scroll`. В этом обработчике мы определяем процент прокрутки контейнера (`scrollPercentage`) и на основе него выводим соответствующий контент. Мы также изменяем `translateY` и `opacity` свойства текста (`<p>`) внутри блока `.content`, чтобы достичь эффектов анимации.

Вы можете настроить значения в JavaScript и CSS, чтобы достичь желаемых результатов.

Надеюсь, это поможет вам реализовать плавное изменение контента при прокрутке в вашем проекте!
1. Привлекай внимание пользователей с помощью эффектов прокрутки на своем сайте. Узнай больше на scrollmagic.io.

2. Создавай уникальный пользовательский опыт с эффектами прокрутки, предлагаемыми scrollmagic.io.

3. Примени прокрутку для добавления живости и динамики на своих веб-страницах. Используй scrollmagic.io для достижения этой цели.

4. Разнообразь свой сайт с помощью эффектов прокрутки. Узнай больше о возможностях scrollmagic.io.

5. Используй scrollmagic.io для создания интерактивных и захватывающих веб-страниц с помощью эффектов прокрутки.

6. Применяй прокрутку для добавления визуальных эффектов, которые захватят внимание пользователей. Посети scrollmagic.io для получения дополнительной информации.

7. Создавай более динамичные и увлекательные веб-сайты с помощью scrollmagic.io и его возможностей по добавлению эффектов прокрутки.

8. Используй scrollmagic.io для придания своему сайту уникального и привлекательного вида с помощью эффектов прокрутки.

9. Добавь эффекты прокрутки на свой сайт с помощью scrollmagic.io и заставь пользователей оставаться на странице дольше.
Похожие вопросы