div+js实现三维立体可调参数跑马灯效果代码

代码语言:html

所属分类:动画

代码描述:div+js实现三维立体可调参数跑马灯效果代码

代码标签: div js 三维 立体 参数 跑马灯

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

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

<head>
  <meta charset="UTF-8">
  

  
  
  
<style>
:root {
	--color-dark: #1f1f1f;
	--color-light: #fff;
	--color-primary: #c9b39c;
	--color-primary-dark: #a68059;
	--color-primary-darker: #634d36;
	--color-accent: #423324;
	--gap-ratio: -0.05;
	--effective-frame-width: calc(
		(var(--zoetrope-radius, 50vw) * 2 * 3.14159 / 23) * (1 - var(--gap-ratio))
	);
	--frame-width: var(--effective-frame-width);
	--frame-height: var(--frame-width);
	--zoetrope-radius-outer: calc(var(--zoetrope-radius, 50vw) + 1vw);
	--zoetrope-spin-duration: 800ms;
}

*,
::after,
::before {
	border-style: solid;
	border-width: 0;
	box-sizing: border-box;
}

body {
	background: radial-gradient(
			circle,
			var(--color-primary) 0,
			var(--color-primary-dark) 50%,
			var(--color-primary-darker) 85%,
			var(--color-accent) 100%
		),
		radial-gradient(circle at 30% 20%, rgba(0, 0, 0, 0.15) 0, transparent 80%),
		radial-gradient(circle at 70% 80%, rgba(0, 0, 0, 0.1) 0, transparent 90%);
	background-color: var(--color-primary);
	color: var(--color-accent);
	font-family: "Roboto", sans-serif;
	height: 100vh;
	line-height: 1.5;
	margin: 0;
	overflow: hidden;
	width: 100%;
}

.ambient-light-layer {
	left: 0;
	position: absolute;
	top: 0;
	width: 100%;
	z-index: 800;
}

.ambient-light-layer,
.wrapper {
	height: 100%;
	pointer-events: none;
}

.wrapper {
	align-items: center;
	display: grid;
	justify-items: center;
	place-items: center;
	-webkit-user-select: none;
	-moz-user-select: none;
	user-select: none;
}

.zoetrope {
	display: block;
	height: var(--zoetrope-radius, 50vw);
	perspective: 1000px;
	pointer-events: none;
	width: var(--zoetrope-radius, 50vw);
}

.zoetrope-base {
	display: block;
	transform: translateZ(var(--zoetrope-depth, -800vw))
		rotateX(var(--zoetrope-tilt, -90deg));
	transform-style: preserve-3d;
	transition: transform 1.5s cubic-bezier(0.25, 1, 0.5, 1);
	will-change: transform;
}

.zoetrope-base,
.zoetrope-drums {
	height: 100%;
	position: relative;
	width: 100%;
}

.zoetrope-drums {
	align-items: center;
	animation: spin var(--zoetrope-spin-duration) linear infinite;
	display: grid;
	justify-items: center;
	place-items: center;
	transform-style: preserve-3d;
}

.zoetrope-drum-inner,
.zoetrope-drum-outer {
	grid-area: 1/-1;
}

.zoetrope-drum-inner,
.zoetrope-drum-outer,
.zoetrope-slits,
.zoetrope-strip {
	height: 100%;
	position: relative;
	transform-style: preserve-3d;
	width: 100%;
}

.zoetrope-slits,
.zoetrope-strip {
	display: block;
}

.zoetrope-frame {
	backface-visibility: hidden;
	background: url(//repo.bfw.wiki/bfwrepo/images/paoma/willie.webp);
	background-position: calc(var(--index) * -100% / 23) 0;
	background-size: cover;
	height: var(--frame-height);
	transform: translate(-50%, -50%) rotateY(var(--ry))
		translateZ(calc(-1 * var(--zoetrope-radius, 50vw)));
}

.zoetrope-frame,
.zoetrope-slit {
	left: 50%;
	position: absolute;
	top: 50%;
	width: var(--frame-width);
}

.zoetrope-slit {
	backface-visibility: visible;
	background: linear-gradient(
			90deg,
			#000 40%,
			transparent 0,
			transparent 60%,
			#000 0
		),
		url(//repo.bfw.wiki/bfwrepo/images/paoma/slits.png);
	background-position: 50%;
	background-repeat: no-repeat;
	background-size: auto 100%;
	height: calc(var(--frame-height) * 1.75);
	transform: translate(-50%, -75%) rotateY(var(--ry))
		translateZ(var(--zoetrope-radius-outer));
}

@keyframes spin {
	from {
		transform: rotateY(1turn);
	}

	to {
		transform: rotateY(0deg);
	}
}

.controls-layer {
	display: block;
	position: fixed;
	right: 0.75rem;
	top: 0.75rem;
	z-index: 999;
}

.controls {
	background: rgba(0, 0, 0, 0.75);
	border-radius: 0.5rem;
	padding: 1rem;
	width: 11.25rem;
}

.control-group,
.controls {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

label {
	color: var(--color-light);
	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
	font-size: 0.75rem;
	letter-spacing: 0.025rem;
	opacity: 0.5;
	-webkit-user-select: none;
	-moz-user-select: none;
	user-sele.........完整代码请登录后点击上方下载按钮下载查看

网友评论0