js+css实现网页滚动驱动母亲节快乐动画代码

代码语言:html

所属分类:加载滚动

代码描述:js+css实现网页滚动驱动母亲节快乐动画代码

代码标签: js css 网页 滚动 驱动 母亲节 快乐 动画 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  
  
  
  
  
<style>
:root {
	--day-top: #92d9ff;
	--day-mid: #d5f0ff;
	--day-bottom: #f7fbff;
	--night-top: #08111f;
	--night-mid: #11253d;
	--night-bottom: #1e3550;
	--flower-a: #ff7cb8;
	--flower-b: #ffd465;
	--flower-c: #7fcaff;
	--metal-top: #d7edf7;
	--metal-bottom: #88a7b8;
	--metal-edge: #40596a;
	--dome-top: #b7ffea;
	--dome-bottom: #6edec3;
	--stick: #1c2833;
	--panel-ink: #f8fbff;
	--panel-shadow: rgba(3, 10, 18, 0.18);
}

* {
	box-sizing: border-box;
}

html,
body {
	margin: 0;
	min-height: 100%;
}

html {
	overflow-x: hidden;
	overflow-y: hidden;
	background: #040913;
}

body {
	font-family: Georgia, "Times New Roman", serif;
	height: 100vh;
	height: 100svh;
	min-height: 100%;
	overflow-y: auto;
	overflow-x: hidden;
	scroll-behavior: smooth;
	scroll-snap-type: y mandatory;
	overscroll-behavior-y: contain;
	-webkit-overflow-scrolling: touch;
	color: var(--panel-ink);
	background: transparent;
}

.scroll-snap-unsupported {
	position: fixed;
	inset: 0;
	display: none;
	align-items: center;
	justify-content: center;
	padding: clamp(1.25rem, 4vw, 2rem);
	z-index: 20;
	background:
		radial-gradient(circle at 18% 18%, rgba(196, 240, 255, 0.08), transparent 34%),
		radial-gradient(circle at 78% 20%, rgba(157, 243, 223, 0.08), transparent 30%),
		linear-gradient(180deg, #050b16 0%, #0a1221 100%);
	color: rgba(248, 251, 255, 0.96);
}

.scroll-snap-unsupported[hidden] {
	display: none;
}

.scroll-snap-unsupported__panel {
	width: min(40rem, 100%);
	padding: clamp(1.25rem, 3vw, 2rem);
	border: 1px solid rgba(153, 207, 225, 0.3);
	border-radius: 1rem;
	background: rgba(8, 16, 30, 0.8);
	box-shadow: 0 1.25rem 2.5rem rgba(0, 0, 0, 0.28);
	backdrop-filter: blur(3px);
}

.scroll-snap-unsupported__panel h1 {
	margin: 0;
	font-size: clamp(1.35rem, 4vw, 2rem);
	line-height: 1.2;
	color: #f6fbff;
}

.scroll-snap-unsupported__panel p {
	margin: 0.75rem 0 0;
	font-size: clamp(1rem, 2.5vw, 1.125rem);
	line-height: 1.45;
	color: rgba(233, 243, 255, 0.9);
}

body[data-scroll-snap-events="unsupported"] {
	overflow: hidden;
	scroll-snap-type: none;
}

body[data-scroll-snap-events="unsupported"] .scene-frame,
body[data-scroll-snap-events="unsupported"] .play-layer,
body[data-scroll-snap-events="unsupported"] .snap-shell {
	display: none;
}

body[data-scroll-snap-events="unsupported"] .scroll-snap-unsupported {
	display: flex;
}

.scene-frame {
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 0;
	overflow: hidden;
}

.play-layer {
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 2;
	overflow: hidden;
}

body[data-game="guessing"] .play-layer,
body[data-game="resolved"] .play-layer {
	z-index: 8;
}

.flow-overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 3;
	opacity: 0;
	transition: opacity 360ms ease;
}

.flow-overlay__panel {
	position: absolute;
	left: 50%;
	top: 16vh;
	width: min(68rem, calc(100vw - 2.5rem));
	transform: translate(-50%, 4.5rem) scale(0.965);
	transform-origin: top center;
	color: rgba(248, 251, 255, 0.96);
	text-shadow: 0 1px 8px rgba(5, 10, 20, 0.44);
	clip-path: inset(0 0 24% 0);
	transition: transform 680ms cubic-bezier(0.22, 1, 0.36, 1), clip-path 680ms cubic-bezier(0.22, 1, 0.36, 1);
}

.flow-overlay__surface {
	position: relative;
	min-height: 18rem;
	user-select: none;
}

.flow-overlay__glyph {
	position: absolute;
	left: 0;
	top: 0;
	opacity: 0;
	pointer-events: none;
	transform: translateY(1.2rem) scale(0.96);
	transition:
		opacity 420ms ease,
		transform 760ms cubic-bezier(0.22, 1, 0.36, 1);
	transition-delay: calc(var(--glyph-index, 0) * 8ms);
}

.flow-overlay__glyph-inner {
	display: block;
	line-height: 1;
	color: rgba(250, 252, 255, 0.98);
	text-shadow:
		0 0 18px rgba(166, 255, 220, 0.14),
		0 2px 12px rgba(5, 10, 20, 0.48);
	transform: translate3d(0, 0, 0);
	will-change: transform;
}

.scene {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: hidden;
	pointer-events: none;
	background: #050a12;
}

.scene__sky,
.scene__night-wash,
.sun,
.moon,
.stars,
.garden,
.hills,
.flowers,
	.ufo-fleet,
.path,
.grass,
.stick-figure {
	position: absolute;
}

.visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.scene__sky {
	inset: 0;
	transition: opacity 900ms ease, transform 900ms ease;
}

.scene__sky--day {
	background:
		radial-gradient(circle at 18% 18%, rgba(255, 255, 255, 0.52), transparent 18%),
		radial-gradient(circle at 78% 16%, rgba(170, 229, 255, 0.38), transparent 18%),
		linear-gradient(180deg, var(--day-top) 0%, var(--day-mid) 46%, var(--day-bottom) 100%);
	opacity: 1;
	transform: scale(1);
}

.scene__sky--night {
	background:
		radial-gradient(circle at 22% 15%, rgba(72, 96, 214, 0.2), transparent 20%),
		radial-gradient(circle at 74% 18%, rgba(159, 247, 223, 0.1), transparent 18%),
		linear-gradient(180deg, var(--night-top) 0%, var(--night-mid) 48%, var(--night-bottom) 100%);
	opacity: 0;
	transform: scale(1.04);
}

.scene__night-wash {
	inset: 0;
	background:
		radial-gradient(circle at 58% 58%, rgba(255, 154, 73, 0.18), transparent 24%),
		linear-gradient(180deg, rgba(255, 157, 82, 0.08), rgba(8, 17, 31, 0.28) 44%, rgba(4, 10, 18, 0.5));
	opacity: 0;
	transition: opacity 1200ms ease;
}

.sun,
.moon {
	top: 8vh;
	right: 10vw;
	width: clamp(72px, 10vw, 140px);
	aspect-ratio: 1;
	border-radius: 50%;
	transition: opacity 1100ms ease, transform 1100ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 1100ms ease;
	transition-delay: 0ms;
}

.sun {
	background: radial-gradient(circle at 35% 35%, #fff8d0, #ffdf7c 60%, #f6a53a 100%);
	box-shadow: 0 0 0 20px rgba(255, 221, 112, 0.22), 0 0 90px rgba(255, 216, 122, 0.3);
	opacity: 1;
	transform: translate3d(0, 0, 0) scale(1);
}

.moon {
	background: radial-gradient(circle at 35% 35%, #fffdf2, #f5efc4 60%, #d0c78c 100%);
	box-shadow: 0 0 0 18px rgba(245, 239, 196, 0.12), 0 0 90px rgba(245, 239, 196, 0.12);
	opacity: 0;
	transform: translate3d(8vw, 18vh, 0) scale(0.5);
}

.stars {
	inset: 0;
	background-repeat: repeat;
	opacity: 0;
	transition: opacity 800ms ease;
}

.stars-a {
	background-image:
		radial-gradient(circle at 10% 20%, #fff 0 1.5px, transparent 2.5px),
		radial-gradient(circle at 24% 14%, #d6ebff 0 1.5px, transparent 2.5px),
		radial-gradient(circle at 42% 8%, #fff 0 1.4px, transparent 2.4px),
		radial-gradient(circle at 58% 18%, #fff7cf 0 1.6px, transparent 2.6px),
		radial-gradient(circle at 70% 10%, #d6ebff 0 1.4px, transparent 2.4px),
		radial-gradient(circle at 84% 24%, #fff 0 1.5px, transparent 2.5px);
}

.stars-b {
	background-image:
		radial-gradient(circle at 16% 30%, rgba(255, 255, 255, 0.8) 0 1.2px, transparent 2.2px),
		radial-gradient(circle at 37% 22%, rgba(255, 255, 255, 0.75) 0 1.2px, transparent 2.2px),
		radial-gradient(circle at 63% 28%, rgba(214, 235, 255, 0.7) 0 1.2px, transparent 2.2px),
		radial-gradient(circle at 88% 16%, rgba(255, 255, 255, 0.85) 0 1.2px, transparent 2.2px);
	animation: twinkle 5s ease-in-out infinite alternate;
}

.garden {
	inset: auto 0 0;
	height: 70vh;
	min-height: 420px;
	transition: filter 900ms ease;
}

.hills {
	left: -8%;
	width: 116%;
	border-radius: 50%;
}

.hill-back {
	bottom: 18vh;
	height: 28vh;
	background: radial-gradient(circle at 50% 30%, #7db26a, #5f954f 68%);
}

.hill-front {
	bottom: 8vh;
	height: 32vh;
	background: radial-gradient(circle at 50% 30%, #638f54, #436e38 70%);
}

.path {
	left: 50%;
	bottom: 0;
	width: clamp(160px, 24vw, 320px);
	height: 22vh;
	transform: translateX(-50%);
	clip-path: polygon(40% 0, 60% 0, 100% 100%, 0 100%);
	background:
		linear-gradient(180deg, rgba(255, 255, 255, 0.28), transparent 14%),
		linear-gradient(180deg, #b8bcae, #8f9786);
	opacity: 0.78;
	transition: filter 900ms ease, opacity 900ms ease;
}

.grass {
	left: 0;
	right: 0;
	bottom: 0;
	height: 22vh;
	background:
		linear-gradient(180deg, transparent, rgba(0, 0, 0, 0.08) 22%),
		linear-gradient(180deg, #46874a, #234b21);
	transition: filter 900ms ease;
}

.grass::before,
.grass::after {
	position: absolute;
	inset: auto 0 0;
	content: "";
}

.grass::before {
	height: 9vh;
	background:
		linear-gradient(110deg, transparent 0 6%, #2d6a33 6% 7%, transparent 7% 12%, #2d6a33 12% 13%, transparent 13% 100%),
		linear-gradient(70deg, transparent 0 10%, #25562a 10% 11%, transparent 11% 16%, #25562a 16% 17%, transparent 17% 100%);
	opacity: 0.7;
}

.grass::after {
	height: 2px;
	background: rgba(255, 255, 255, 0.14);
	bottom: 22vh;
}

.flowers {
	bottom: 8vh;
	width: min(28vw, 300px);
	height: 18vh;
	opacity: 0.96;
	transition: filter 900ms ease, opacity 900ms ease;
}

.flowers::before,
.flowers::after {
	position: absolute;
	inset: 0;
	content: "";
}

.flowers-left {
	left: 3vw;
	transform: rotate(-2deg);
}

.flowers-right {
	right: 4vw;
	transform: scaleX(-1) rotate(-2deg);
}

.flowers::before {
	background:
		radial-gradient(circle at 14% 68%, var(--flower-a) 0 8px, transparent 9px),
		radial-gradient(circle at 30% 54%, var(--flower-b) 0 7px, transparent 8px),
		radial-gradient(circle at 47% 70%, var(--flower-c) 0 8px, transparent 9px),
		radial-gradient(circle at 66% 50%, var(--flower-a) 0 7px, transparent 8px),
		radial-gradient(circle at 82% 64%, var(--flower-b) 0 8px, transparent 9px),
		linear-gradient(84deg, transparent 0 12%, #2e6f39 12% 13%, transparent 13% 28%, #2e6f39 28% 29%, transparent 29% 44%, #2e6f39 44% 45%, transparent 45% 60%, #2e6f39 60% 61%, transparent 61% 76%, #2e6f39 76% 77%, transparent 77% 100%);
}

.flowers::after {
	background:
		radial-gradient(circle at 14% 68%, rgba(255, 255, 255, 0.35) 0 2px, transparent 3px),
		radial-gradient(c.........完整代码请登录后点击上方下载按钮下载查看

网友评论0