canvas实现11种炫酷动画效果代码
代码语言:html
所属分类:动画
代码描述:canvas实现11种炫酷动画效果代码
下面为部分代码预览,完整代码请点击下载或在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">⇦</button>
<button id="next">⇨</button>
<div id="controls">
<button id="play">▶</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