css实现三维旋转立体数字球动画效果
代码语言:html
所属分类:动画
代码描述:css实现三维旋转立体数字球动画效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @keyframes tumble { 0% { transform: rotateY(0deg) rotateX(0deg) rotateZ(0deg); } 100% { transform: rotateY(360deg) rotateX(360deg) rotateZ(360deg); } } @keyframes spin { 0% { transform: perspective(800px) rotateY(0deg); } 100% { transform: perspective(800px) rotateY(360deg); } } body { background-color: #000; font-family: sans-serif; color: #fff; } #dice { position: absolute; top: 50%; left: 50%; transform-style: preserve-3d; animation: spin 10s infinite linear; transform: perspective(800px); } #d4-wrap { transform-style: preserve-3d; transform: translateX(346.41px) translateZ(200px); } #d6-wrap { transform-style: preserve-3d; transform: translateX(-346.41px) translateZ(200px); } #d8-wrap { transform-style: preserve-3d; transform: translateX(-346.41px) translateZ(-200px); } #d10-wrap { transform-style: preserve-3d; transform: translateZ(400px); } #d12-wrap { transform-style: preserve-3d; transform: translateZ(-400px); } #d20-wrap { transform-style: preserve-3d; transform: translateX(346.41px) translateZ(-200px); } #d4, #d6, #d8, #d10, #d12, #d20 { transform-style: preserve-3d; animation: tumble 8s infinite linear; } .d4 { --width: 60px; --height: 0.8660254; --center: 0.288675; --offset: calc(var(--center)*var(--center)); --dihedral-angle: 70.528779deg; --co-dihedral: calc(90deg - var(--dihedral-angle)); --luminance: 50%; font-size: 1.5rem; width: calc(2 * var(--width)); height: calc(2 * var(--width) * (var(--height))); background-color: hsla(30,100%,var(--luminance),0.4); position: absolute; clip-path: polygon(50% 0%, 0% 100%, 100% 100%); transform-origin: 50% calc(var(--center)*(var(--width))); transform-style: preserve-3d; } .d4[data-side='1']{ --luminance: 40%; transform: rotateY(120deg) rotateX(var(--co-dihedral)) translateZ(calc(var(--offset)*(var(--width)))); } .d4[data-side='2']{ --luminance: 50%; transform: rotateX(var(--co-dihedral)) translateZ(calc(var(--offset)*(var(--width)))); } .d4[data-side='3']{ --luminance: 60%; transform: rotateY(240deg) rotateX(var(--co-dihedral)) translateZ(calc(var(--offset)*(var(--width)))); } .d4[data-side='4']{ --luminance: 70%; transform: rotateY(180deg) rotateX(270deg) translateZ(calc((1 + var(--center))*var(--width))) translateY(calc(0px - (var(--height)*(var(--width))))); } [data-number]::after { position: absolute; content: attr(data-number); bottom: 0; text-align: center; left: 0; right: 0; padding: 0.4rem 0 0.1rem; transform-origin: center top; } .d4[data-side='1'] [data-number='2']::after, .d4[data-side='2'] [data-number='3']::after, .d4[data-side='3'] [data-number='1']::after, .d4[data-side='4'] [data-number='1']::after { transform: rotateZ(120deg); } .d4[data-side='1'] [data-number='3']::after, .d4[data-side='2'] [data-number='1']::after, .d4[data-side='3'] [data-number='2']::after, .d4[data-side='4'] [data-number='3']::after { transform: rotateZ(240deg); } .d6 { --width: 50px; font-size: 2rem; width: calc(2 * var(--width)); height: calc(2 * var(--width)); --luminance: 50%; background-color: hsla(280,100%,var(--luminance),0.4); position: absolute; } .d6::after { position: absolute; content: attr(data-side); top: calc(50% - 0.5em); text-align: center; left: 0; right: 0; } .d6[data-side='1']{ --luminance: 30%; transform: rotateY(90deg) translateZ(var(--width)); } .d6[data-si.........完整代码请登录后点击上方下载按钮下载查看
网友评论0