gsap炫酷网页滚动动画效果代码

代码语言:html

所属分类:加载滚动

代码描述:gsap炫酷网页滚动动画效果代码,鼠标滚动向下滚动试试。

代码标签: 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