gsap炫酷网页滚动动画效果代码
代码语言:html
所属分类:加载滚动
代码描述:gsap炫酷网页滚动动画效果代码,鼠标滚动向下滚动试试。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');
@import url('https://fonts.cdnfonts.com/css/grids-personal-use');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
background: #FEF2E9;
color: #fff;
overflow-x: hidden;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.hero {
position: relative;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #FEF2E9;
overflow: hidden;
mask: linear-gradient(var(--degrade), transparent var(--transparent), black var(--black));
picture {
position: relative;
display: block;
width: 100%;
height: 100%;
img {
width: 100%;
height: 100%;
}
&:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(180deg,rgba(0, 0, 0, 0) 42%, rgba(0, 0, 0, 0.67) 94%);
z-index: 1;
}
}
}
.section {
position: relative;
width: 100%;
height: 100svh;
}
.pixel-loader {
width: 100%;
height: 100%;
object-fit: cover;
scale: 1.4;
image-rendering: pixelated;
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
filter: contrast(0%) saturate(0%);
}
.pixel-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background:
repeating-linear-gradient(
0deg,
transparent,
transparent 3px,
rgba(0,0,0,0.3) 3px,
rgba(0,0,0,0.3) 6px
),
repeating-linear-gradient(
90deg,
transparent,
transparent 3px,
rgba(0,0,0,0.3) 3px,
rgba(0,0,0,0.3) 6px
);
mix-blend-mode: multiply;
opacity: 1;
}
.content {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
overflow: hidden;
}
.content-after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
display: flex;
flex-direction: column;
align-items: center;
mask: linear-gradient(var(--degrade2), transparent var(--transparent2), black var(--black2));
isolation: isolate;
}
.content-before {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 120%;
height: 120%;
background: #1b2c30;
z-index: -1;
mask: linear-gradient(-105deg, transparent var(--transparent3), black var(--black3));
}
.title {
width: 100%;
height: 80%;
display: flex;
align-items: center;
justify-content: center;
font-family: 'Grids Personal Use', sans-serif;
h1 {
font-size: clamp(2rem, 8vw, 6rem);
}
}
.description {
width: 100%;
height: 20%;
padding-inline: 20px;
display: flex;
align-items: end;
padding-bottom: 20px;
div {
width: 50%;
}
div:nth-of-type(1) {
h2 {
font-size: clamp(2rem, 4vw, 3rem);
font-family: 'Montserrat', sans-serif;
font-weight: 600;
margin-bottom: 10px;
}
p {
font-size: clamp(1rem, 2vw, 1rem);
font-family: 'Montserrat', sans-serif;
font-weight: 400;
}
}
div:nth-last-of-type(1) {
display: flex;
align-items: center;
justify-content: end;
gap: 20px;
text-align: end;
font-family: 'Montserrat', sans-serif;
}
}
.gallery-section {
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 120vw;
height: 100svh;
background: #333;
z-index: 2;
mask: linear-gradient(105deg, transparent var(--transparent4), black var(--black4));
}
.gallery-section .images {
margin: auto;
width: 100%;
max-width: 1200px;
height: 100%;
background: #333;
display: flex;
justify-content: center;
gap: 20px;
img {
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
will-change: transform, opacity;
}
}
.pixel-loader {
will-change: filter, transform;
}
.pixel-overlay {
will-change: opacity;
}
.content-after,
.content-before,
.gallery-section {
will-change: filter;
}
.wrapper-action {
will-change: transform;
}
.futuristic-barcode {
--glow-color: 0, 255, 136;
--glow-intensity: 0.3;
--pulse-duration: 2s;
will-change: filter;
filter: drop-shadow(0 0 10px rgba(var(--glow-color), var(--glow-intensity)));
animation: barcodePulse var(--pulse-duration) ease-in-out infinite alternate;
}
@keyframes barcodePulse {
0% {
filter: drop-shadow(0 0 5px rgba(var(--glow-color), 0.2));
}
100% {
filter: drop-shadow(0 0 15px rgba(var(--glow-color), 0.6));
}
}
.futuristic-barcode rect {
--flicker-duration: calc(0.1s + (var(--bar-index) % 2) * 0.05s);
will-change: opacity;
animation: barFlicker var(--flicker-duration) ease-in-out infinite alternate;
}
@keyframes barFlicker {
0% {
opacity: 0.7;
}
100% {
opacity: 1;
}
}
.futuristic-barcode line {
--scan-delay: calc((var(--scan-index) - 1) * 0.5s);
will-change: transform, opacity;
animation: scanMove 3s linear infinite var(--scan-delay);
}
@keyframes scanMove {
0% {
transform: translateX(-120px); opacity: 0;
}
10% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
transform: translateX(120px); opacity: 0;
}
}
.futuristic-barcode circle[style*="--data-index"] {
will-change: transform, opacity;
animation: dataPulse 1.5s ease-in-out infinite;
}
@keyframes dataPulse {
0%, 100% {
r: 1;
opacity: 0.8;
}
50% {
r: 2;
opacity: 1;
}
}
.futuristic-barcode circle[style*="--particle-index"] {
--particle-delay: calc((var(--particle-index) - 1) * 0.8s);
will-change: transform, opacity;
animation: particleFloat 4s ease-in-out infinite var(--particle-delay);
}
@keyframes particleFloat {
0%, 100% { transform: translateY(0px) scale(1); opacity: 0.7; }
25% { transform: translateY(-10px) scale(1.2); opacity: 1; }
50% { transform: translateY(0px) scale(0.8); opacity: 0.5; }
75% { transform: translateY(10px) scale(1.1); opacity: 0.9; }
}
.hero-barcode-container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 10;
opacity: 0;
pointer-events: none;
will-change: transform, opacity, scale;
}
.hero-barcode {
--hero-glow-color: 0, 255, 136;
--hero-glow-intensity: 0.5;
--hero-pulse-duration: 3s;
will-change: filter;
filter: drop-shadow(0 0 20px rgba(var(--hero-glow-color), var(--hero-glow-intensity)));
animation: heroBarcodePulse var(--hero-pulse-duration) ease-in-out infinite alternate;
}
@keyframes heroBarcodePulse {
0% {
filter: drop-shadow(0 0 10px rgba(var(--hero-glow-color), 0.3));
}
100% {
filter: drop-shadow(0 0 30px rgba(var(--hero-glow-color), 0.8));
}
}
.hero-barcode rect {
--hero-flicker-duration: calc(0.08s + (var(--bar-index) % 2) * 0.04s);
will-change: opacity;
animation: heroBarFlicker var(--hero-flicker-duration) ease-in-out infinite alternate;
}
@keyframes heroBarFlicker {
0% {
opacity: 0.6;
}
100% {
opacity: 1;
}
}
.hero-barcode line {
--hero-scan-delay: calc((var(--scan-index) - 1) * 0.7s);
will-change: transform, opacity;
animation: heroScanMove 4s linear infinite var(--hero-scan-delay);
}
@keyframes heroScanMove {
0% {
transform: translateX(-200px); opacity: 0;
}
15% {
opacity: 1;
}
85% {
opacity: 1;
}
100% {
transform: translateX(200px); opacity: 0;
}
}
.hero-barcode circle[style*="--data-index"] {
will-change: transform, opacity;
animation: heroDataPulse 2s ease-in-out infinite;
}
@keyframes heroDataPulse {
0%, 100% {
r: 2;
opacity: 0.8;
}
50% {
r: 3;
opacity: 1;
}
}
.hero-barcode circle[style*="--particle-index"] {
--hero-particle-delay: calc((var(--particle-index) - 1) * 0.8s);
will-change: transform, opacity;
animation: heroParticleFloat 5s ease-in-out infinite var(--hero-particle-delay);
}
@keyframes heroParticleFloat {
0%, 100% {
transform: translateY(0px) scale(1);
opacity: 0.7;
}
25% {
transform: translateY(-15px) scale(1.3);
opacity: 1;
}
50% {
transform: translateY(0px) scale(0.9);
opacity: 0.6;
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0