gsap+ScrollTrigger实现暗色亮色切换的视频背景页面滚动文字动画效果代码
代码语言:html
所属分类:加载滚动
代码描述:gsap+ScrollTrigger实现暗色亮色切换的视频背景页面滚动文字动画效果代码,鼠标滚轮向下滚动看到效果。
代码标签: gsap ScrollTrigger 暗色 亮色 切换 视频 背景 页面 滚动 文字 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> *, *:after, *:before { box-sizing: border-box; } :root { --font-size: clamp(2rem, 8vmin + 1rem, 4rem); --line: color-mix(in lch, canvasText 15%, transparent); --base: 0.4; --accent: hsl(8 100% 55%); --header-height: 100vh; --overlay: color-mix(in lch, canvas 70%, transparent); color-scheme: dark only; } :root[data-theme='light'] { --base: 0.3; --line: color-mix(in lch, canvasText 35%, transparent); --overlay: color-mix(in lch, canvas 70%, transparent); color-scheme: light only; } html:not(:focus-within) { scroll-behavior: smooth; } body { min-height: 100vh; font-family: 'SF Pro Text', 'SF Pro Icons', 'AOS Icons', 'Helvetica Neue', Helvetica, Arial, sans-serif, system-ui; background: canvas; } body::before { --size: 60px; content: ''; height: 100vh; width: 100vw; position: fixed; background: linear-gradient( 90deg, var(--line) 1px, transparent 1px var(--size) ) 50% 50% / var(--size) var(--size), linear-gradient(var(--line) 1px, transparent 1px var(--size)) 50% 50% / var(--size) var(--size); -webkit-mask: linear-gradient(-15deg, transparent 40%, white); mask: linear-gradient(-15deg, transparent 40%, white); top: 0; transform-style: flat; pointer-events: none; z-index: -1; } :is(h1, h2) { font-size: clamp(2rem, 3vw + 1rem, 6rem); } [href='#read'] { position: absolute; bottom: 2rem; left: 50%; translate: -50% 0; width: 48px; aspect-ratio: 1; display: grid; place-items: center; color: canvasText; } [href='#read'] svg { width: 75%; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } [data-split] { font-size: var(--font-size); font-weight: 600; } header { min-height: var(--header-height); display: grid; place-items: center; position: relative; transform-origin: 50% 0%; } h1 { display: flex; flex-direction: column; justify-content: center; text-align: center; } h1 > span:first-of-type { font-size: 0.35em; color: var(--accent); text-transform: uppercase; } header > section { position: relative; top: 0; min-height: var(--header-height); width: 100%; translate: 0 -100%; display: grid; place-items: center; background: var(--overlay); } header > section::before { content: ''; background: var(--overlay); position: absolute; inset: 0; translate: 0 100%; } video { position: sticky; top: 0; height: var(--header-height); width: 100vw; -o-object-fit: cover; object-fit: cover; background: canvas; } footer { text-align: center; padding: 2rem; opacity: 0.875; } section:not(.reader) { min-height: 100vh; display: grid; place-items: center; } .content { position: sticky; top: 0; min-height: 100vh; width: 100ch; padding: 2rem 0; max-width: calc(100% - 4rem); display: grid; place-items: center; margin: 0 auto; line-height: 1; } .content span { opacity: calc(var(--base) + (var(--active))); transition: opacity 0.5s; } .reader { --thick: 0px; outline: var(--thick) dashed var(--accent); outline-offset: calc(var(--thick) * -1); /* The trick here is that --ppc could be dynamic */ height: calc( ((var(--.........完整代码请登录后点击上方下载按钮下载查看
网友评论0