canvas实现11种炫酷动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas实现11种炫酷动画效果代码

代码标签: canvas 炫酷 动画

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

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

<head>
  <meta charset="UTF-8">
  
  
  
  
<style>
@charset "UTF-8";

* {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

body,
html {
	text-size-adjust: 100%;
	-webkit-text-size-adjust: 100%;
	-webkit-tap-highlight-color: transparent;
	text-rendering: optimizeLegibility;
	overflow: hidden;
}

body {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-start;
	width: 100%;
	height: 100%;
	min-height: 100vh;
	font: normal normal 400 16px / 150% sans-serif;
	background: #111;
	color: #eee;
}

button {
	background: rgba(0, 0, 0, 0.5);
	border: none;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	font-size: 1.25rem;
	padding: 0.8rem 1rem;
	border-radius: 7px;
	color: #fff;
	z-index: 10;
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
	border: 1px solid #777;
	box-shadow: rgba(0, 0, 0, 0.25) 0px 54px 55px,
		rgba(0, 0, 0, 0.12) 0px -12px 30px, rgba(0, 0, 0, 0.12) 0px 4px 6px,
		rgba(0, 0, 0, 0.17) 0px 12px 13px, rgba(0, 0, 0, 0.09) 0px -3px 5px;
	transition: background 0.3s;
}

button:hover {
	background: rgba(255, 255, 255, 0.2);
}

#prev,
#next {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
}

#prev {
	left: 1rem;
}

#next {
	right: 1rem;
}

#controls {
	position: absolute;
	bottom: 1rem;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	gap: 1rem;
	z-index: 10;
}

#play {
	padding: 0;
	width: 55px;
	height: 55px;
}

/* Gallery & Slides */
#gallery {
	position: relative;
	width: 100vw;
	height: 100vh;
	overflow: hidden;
}

.slide {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	transform: translateX(100%) scale(1.05);
	clip-path: circle(0% at 50% 50%);
	will-change: transform, opacity, clip-path;
	background: #111;
	filter: url(#liquidMask) url(#gooey) url(#glow) url(#enhance);
}

@keyframes slideIn {
	0% {
		transform: translateX(30%) scale(1.05);
		opacity: 0;
		clip-path: circle(0% at 50% 50%);
		filter: blur(8px) url(#liquidMask) url(#gooey) url(#glow) url(#enhance);
	}
	60% {
		clip-path: circle(150% at 50% 50%);
	}
	100% {
		transform: translateX(0) scale(1);
		opacity: 1;
		clip-path: circle(150% at 50% 50%);
		filter: blur(0) url(#liquidMask) url(#gooey) url(#glow) url(#enhance);
	}
}

@keyframes slideOut {
	0% {
		transform: translateX(0) scale(1);
		opacity: 1;
		clip-path: circle(150% at 50% 50%);
		filter: blur(0) url(#liquidMask) url(#gooey) url(#glow) url(#enhance);
	}
	40% {
		clip-path: circle(150% at 50% 50%);
	}
	100% {
		transform: translateX(-30%) scale(0.95);
		opacity: 0;
		clip-path: circle(0% at 50% 50%);
		filter: blur(8px) url(#liquidMask) url(#gooey) url(#glow) url(#enhance);
	}
}

.slide.enter {
	animation: slideIn 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.slide.exit {
	animation: slideOut 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
</style>

  
  
</head>

<body translate="no">
  <button id="prev">&#8678;</button>
<button id="next">&#8680;</button>

<div id="controls">
	<button id="play">&#9654;</button>
	<button id="randomize">🔄 Randomize All</button>
</div>

<div id="gallery">
	<canvas class="slide" data-sketch="rings"></canvas>
	<canvas class="slide" data-sketch="mountain"></canvas>
	<canvas class="slide" data-sketch="lissajous"></canvas>
	<canvas class="slide" data-sketch="spiral"></canvas>
	<canvas class="slide" data-sketch="dots"></canvas>
	<canvas class="slide" data-sketch="waves"></canvas>
	<canvas class="slide" data-sketch="flow"></canvas>
	<canvas class="slide" data-sketch="tree"></canvas>
	<canvas class="slide" data-sketch="grid"></canvas>
	<canvas class="slide" data-sketch="confetti"></canvas>
	<canvas class="slide" data-sketch="shap.........完整代码请登录后点击上方下载按钮下载查看

网友评论0