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