原文链接
苹果官方网站使用流畅的滚动动画来突出其内容。在这篇文章中,我们将分析并复制一个类似的动画以了解其实现。
HTML 结构由带有文本和背景视频的简单布局组成。
设置 CSS 以根据滚动位置启用流畅的动画。
/* 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; }
根据滚动位置计算文本和视频的状态并实时更新其样式。
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); });
textOpacity:根据滚动位置调整文本的不透明度逐渐淡出。
textTranslateY:计算文本与滚动进度成比例向上移动的距离。
videoScale:调整视频的缩放比例,使其随着滚动位置按比例缩小。
向下滚动:文本向上移动并淡出,同时视频缩小。
向上滚动:文本向下移动并重新出现,同时视频放大。
以上是[翻译]苹果网站动画分析(滚动同步)的详细内容。更多信息请关注PHP中文网其他相关文章!