


[Translations] Analyzing Apple Website Animation (crolling Synchronization)
Original Article Link
The official Apple website uses smooth scroll-based animations to highlight its content. In this post, we will analyze and replicate a similar animation to understand its implementation.
? Original Apple Website (Video)
? Reproduced Implementation
1. Scroll Synchronization
- The animation state is calculated in real-time based on the scroll position (scrollY).
2. Bidirectional Animation
- When scrolling down: Text moves upward and fades out, while the video scales down.
- When scrolling up: Text moves downward and reappears, while the video scales up.
3. CSS Property Utilization
- Use transform: translateY and scale values proportional to the scroll position.
- Smooth animation is ensured using requestAnimationFrame.
? HTML Structure
The HTML structure consists of a simple layout with text and a background video.
? Reproduced Implementation
Set up CSS to enable smooth animations based on the scroll position.
/* Text Section */ .text-section { position: absolute; top: 20%; width: 100%; text-align: center; color: white; z-index: 2; } .video-section { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; display: flex; justify-content: center; align-items: center; overflow: hidden; } .background-video { width: 100vw; height: auto; }
? JavaScript (Scroll-based Animation)
Calculate the state of the text and video based on the scroll position and update their styles in real-time.
const textSection = document.querySelector(".text-section"); const videoSection = document.querySelector(".video-section"); function handleScroll() { const scrollY = window.scrollY; const windowHeight = window.innerHeight; const textOpacity = Math.max(0, 1 - scrollY / (windowHeight / 2)); const textTranslateY = Math.min(scrollY / 2, 100); textSection.style.transform = `translateY(-${textTranslateY}px)`; textSection.style.opacity = textOpacity; const videoScale = Math.max(0.5, 1 - scrollY / (windowHeight * 2)); videoSection.style.transform = `scale(${videoScale})`; } window.addEventListener("scroll", () => { requestAnimationFrame(handleScroll); });
?️ Key Operation Breakdown
?️ Key Functionality Explanation
- Scroll-based Calculation
textOpacity: Adjusts the opacity of the text to gradually fade out based on the scroll position.
textTranslateY: Calculates how far the text moves upward in proportion to the scroll progress.
videoScale: Adjusts the scaling of the video to shrink proportionally with the scroll position.
- requestAnimationFrame
- An asynchronous function that enhances animation performance by leveraging the browser's optimized rendering loop for smooth operation.
- Bidirectional Animation
Scrolling Down: The text moves upward and fades out, while the video scales down.
Scrolling Up: The text moves downward and reappears, while the video scales up.
The above is the detailed content of [Translations] Analyzing Apple Website Animation (crolling Synchronization). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











I see Google Fonts rolled out a new design (Tweet). Compared to the last big redesign, this feels much more iterative. I can barely tell the difference

Have you ever needed a countdown timer on a project? For something like that, it might be natural to reach for a plugin, but it’s actually a lot more

Everything you ever wanted to know about data attributes in HTML, CSS, and JavaScript.

At the start of a new project, Sass compilation happens in the blink of an eye. This feels great, especially when it’s paired with Browsersync, which reloads

Tartan is a patterned cloth that’s typically associated with Scotland, particularly their fashionable kilts. On tartanify.com, we gathered over 5,000 tartan

The inline-template directive allows us to build rich Vue components as a progressive enhancement over existing WordPress markup.

PHP templating often gets a bad rap for facilitating subpar code — but that doesn't have to be the case. Let’s look at how PHP projects can enforce a basic

Let’s attempt to coin a term here: "Static Form Provider." You bring your HTML
