css实现三维3d游乐场旋转木马动画效果代码
代码语言:html
所属分类:动画
代码描述:css实现三维3d游乐场旋转木马动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> *, *:after, *:before { box-sizing: border-box; transform-style: preserve-3d; } @property --jump { initial-value: 0%; syntax: '<percentage>'; inherits: false; } @property --spin { initial-value: 0deg; syntax: '<angle>'; inherits: false; } @property --hue { initial-value: 0; syntax: '<number>'; inherits: false; } body { display: grid; place-items: center; min-height: 100vh; background: var(--bg); overflow: hidden; } :root { --bg: #121921; --height: 16; --width: 20; --speed: 5; --horseSpeed: 2; --horseSize: 5; --base-depth: 10; --pillar-depth: 4; --pillar: #8c8c8c; --window: #fcf7e8; --sill: #e6b319; --lights: #fff; --primary: #b447eb; --secondary: #fafafa; --base-coefficient: 0.75vmin; --base-height: 20; --base-hole: 0.6vmin; --base-stripe: 3.9; } .carousel { height: calc(var(--height) * 1vmin); width: calc(var(--width) * 1vmin); transform: translate(-50%, -50%) rotateX(-15deg) rotateY(40deg); position: absolute; top: 50%; left: 50%; } .carousel__core { bottom: -10%; height: 110%; left: 50%; position: absolute; transform: translate(-50%, 0); width: calc(var(--width) * 0.2vmin); } .carousel__core div { background: var(--pillar); height: 100%; left: 50%; position: absolute; top: 50%; transform: translate(-50%, -50%) rotateY(calc(((-360 / var(--sides)) * var(--side)) * 1deg)) translate3d(0, 0, calc((var(--width) * 0.4) * 0.75vmin)) rotateY(180deg); width: 100%; filter: brightness(0.9); } .carousel__core div:nth-of-type(even) { filter: brightness(1); } .carousel__core div:nth-of-type(even):after { background: var(--window); border: 2px solid var(--sill); border-radius: 35% 35% 0 0; content: ''; height: 20%; left: 50%; position: absolute; top: 50%; transform: translate(-50%, 0%); width: 60%; } .carousel__light { width: 15%; height: 15%; position: absolute; background: hsl(var(--hue, 0), 90%, 80%); filter: blur(10px), brightness(1.1); top: 50%; left: 50%; border-radius: 50%; transform: translate(-50%, -50%); -webkit-animation: party calc(var(--party-speed, 1) * 1s) calc(var(--delay, 1) * -1s) infinite linear; animation: party calc(var(--party-speed, 1) * 1s) calc(var(--delay, 1) * -1s) infinite linear; } .carousel__lightring { position: absolute; top: 100%; left: 50%; background: #fcf1cf; border-radius: 50%; filter: blur(4vmin); height: calc(var(--width) * 2.3vmin); width: calc(var(--width) * 2.3vmin); transform: translate(-50%, -50%) rotateX(90deg) translate3d(0, 0, calc(var(--height) * -0.1vmin)); } .carousel__horses { -webkit-animation: spin calc(var(--speed) * 1s) infinite linear; animation: spin calc(var(--speed) * 1s) infinite linear; height: 100%; left: 50%; position: absolute; top: 50%; transform: translate(-50%, -50%) rotateY(var(--spin)); width: 100%; z-index: 5; } .carousel__horse { --depth: calc(var(--width) * var(--depth-coefficient)); -webkit-animation: jump calc(var(--horseSpeed) * 1s) calc((var(--horseSpeed) * var(--delay)) * 1s) infinite linear both; animation: jump calc(var(--horseSpeed) * 1s) calc((var(--horseSpeed) * var(--delay)) * 1s) infinite linear both; font-size: calc(var(--horseSize) * 1vmin); left: 50%; position: absolute; top: 50%; transform: translate(-50%, var(--jump)) rotateY(calc(((-360 / var(--horses)) * var(--horse)) * 1deg)) translate3d(0, 0, calc(var(--depth) * 1vmin)) rotateY(180deg); } .carousel__horse:nth-of-type(even) { --depth: calc(var(--width) * var(--depth-coefficient)); } .carousel__base { -webkit-animation: spin calc(var(--speed) * 1s) infinite linear; animation: spin calc(var(--speed) * 1s) infinite linear; left: 50%; position: absolute; top: 100%; transform: translate(-50%, -50%) rotateY(var(--spin)); height: 20%; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0