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