鲁比高堡机器动画效果
代码语言:html
所属分类:动画
代码描述:鲁比高堡机器动画效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> :root { --base-speed: 0.5s; --domino-speed: calc(var(--base-speed) * 1.3); /** * Dominos hit the next domino before finishing their animation. We start the * next domino's animation when they actually hit. */ --domino-hit-speed: calc(var(--domino-speed) * 0.25); /** * The final domino falls all the way down instead of resting on another * domino. Since it has further to go, its duration lasts longer so it appears * to be going the same speed. */ --last-domino-speed: calc(var(--domino-speed) * 10 / 9); --domino-1-delay: 0s; --domino-2-delay: calc(var(--domino-1-delay) + var(--domino-hit-speed)); --domino-3-delay: calc(var(--domino-2-delay) + var(--domino-hit-speed)); --domino-4-delay: calc(var(--domino-3-delay) + var(--domino-hit-speed)); --domino-5-delay: calc(var(--domino-4-delay) + var(--domino-hit-speed)); --domino-6-delay: calc(var(--domino-5-delay) + var(--domino-hit-speed)); --ball-and-string-speed: calc(var(--base-speed) * 2); --ball-and-string-delay: calc( var(--domino-6-delay) + var(--domino-speed) * 0.3 ); --car-speed: calc(var(--base-speed) * 3); --car-delay: calc( var(--ball-and-string-delay) + var(--ball-and-string-speed) * 0.25 ); --_8-ball-speed: calc(var(--base-speed) * 4.5); --_8-ball-delay: calc(var(--car-delay) + var(--car-speed) * 0.62); --domino-7-delay: calc(var(--_8-ball-delay) + var(--_8-ball-speed) * 0.9); --domino-8-delay: calc(var(--domino-7-delay) + var(--domino-hit-speed)); --domino-9-delay: calc(var(--domino-8-delay) + var(--domino-hit-speed)); --domino-10-delay: calc(var(--domino-9-delay) + var(--domino-hit-speed)); --domino-11-delay: calc(var(--domino-10-delay) + var(--domino-hit-speed)); --domino-12-delay: calc(var(--domino-11-delay) + var(--domino-hit-speed)); --last-ball-speed: calc(var(--base-speed) * 3); --last-ball-delay: calc(var(--domino-12-delay) + var(--domino-hit-speed)); --total-duration: calc(var(--last-ball-delay) + var(--last-ball-speed)); } svg { background: #efefd3; height: 60vw; max-height: 350px; transform-origin: top left; transition: transform var(--total-duration) ease; } svg.game-on { transform: translateX(calc(-100% + 100vw)); } svg * { transform-box: fill-box; } .domino { transform-box: fill-box; transition: transform var(--domino-speed); transform-origin: bottom right; } .domino-last { transition-duration: var(--last-domino-speed); } .domino-2 { transition-delay: var(--domino-2-delay); } .domino-3 { transition-delay: var(--domino-3-delay); } .domino-4 { transition-delay: var(--domino-4-delay); } .domino-5 { transition-delay: var(--domino-5-delay); } .domino-6 { transition-delay: var(--domino-6-delay); } .domino-7 { transition-delay: var(--domino-7-delay); } .domino-8 { transition-delay: var(--domino-8-delay); } .domino-9 { transition-delay: var(--domino-9-delay); } .domino-10 { transition-delay: var(--domino-10-delay); } .domino-11 { transition-delay: var(--domino-11-delay); } .domino-12 { transition-delay: var(--domino-12-delay); } .game-on .domino { transform: rotate(76deg); } .game-on .domino-last { transform: rotate(90deg); } #Ball_and_String { transform: rotate(33deg); transition: transform var(--ball-and-string-speed); transition-delay: var(--ball-and-string-delay); transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); /* This is broken in webkit without these rules */ transform-box: unset; transform-origin: 914px -38px; } .game-on #Ball_and_String { transform: rotate(-20deg); } #Car { transition: transform var(--car-speed); transition-delay: var(--car-delay); } .game-on #Car { transform: translateX(710px); } .game-on .wheel { animation: spin; animation-duration: var(--car-speed); animation-delay: var(--car-delay); transform-origin: center; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(1080deg); } } .game-on #_8_Ball, .game-on ._8-ball-center { animation: _8_ball_outer; animation-duration: var(--_8-ball-speed); animation-delay: var(--_8-ball-delay); animation-timing-function: ease-in-out; animation-fill-mode: forwards; transform-origin: center; } .game-on ._8-ball-center { animation-name: _8_ball_center; } @keyframes _8_ball_outer { from { transform: translate(0, 0); } 35% { transform: translate(715px, 115px); } 65% { transform: translate(405px, 173px); } to { transform: translate(1120px, 265px); } } @keyframes _8_ball_center { from { transform: rotate(0deg); } 35% { transform: rotate(720deg); } 65% { transform: rotate(360deg); } to { transform: rotate(1080deg); } } #Final_Ball { transition: transform var(--last-ball-speed); transition-delay: var(--last-ball-delay); transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); } .game-on #Final_Ball { transform: translateX(325px); } .game-on #ball-bumps { animation-name: spin; animation-duration: var(--last-ball-speed); animation-delay: var(--last-ball-delay); animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1); animation-fill-mode: forwards; transform-box: fill-box; transform-origin: center; } /** * Base SVG styles: fills, strokes, etc. */ .box { fill: #c6c4a1; } .box-lid { fill: #afac84; } .domino { fill: #ffffff; stroke: #000000; stroke-width: 1.8046; stroke-miterlimit: 10; } .ball-1 { fill: #9ec10c; stroke: #ffffff; stroke-width: 1.8; stroke-miterlimit: 10; } .t-ball-texture { fill: none; stroke-width: 5; stroke-dasharray: 2; } .t-ball-texture-1 { stroke: #f9f910; } .t-ball-texture-2 { stroke: #f4f3c6; } .t-ball-texture-3 { stroke: #abf22f; } .string-bg { fill: none; stroke: #e2ae7a; stroke-width: 7; stroke-miterlimit: 10; } .string-fg { fill: none; stroke: #00a6f9; stroke-width: 5; stroke-miterlimit: 10; stroke-dasharray: 11.7676, 11.7676; } .car-grey-bg { fill: #4c4c4b; } .tire-bg { fill: #42290f; } .car-bg { fill: #f94212; } .tire-dark { fill: #0c0601; } .wheel-spoke { fill: #877d77; } .tire-dark-stroke { fill: none; stroke: #0c0601; stroke-width: 2.1673; stroke-miterlimit: 10; } .wheel-center { fill: #ddd8d4; } .car-detail { fill: none; stroke: #877d77; stroke-width: 6.5s018; stroke-linejoin: round; stroke-miterlimit: 10; } .tire-highlight { fill: #f94212; stroke: #444342; stroke-width: 0.399; stroke-miterlimit: 10; } .window { opacity: 0.2; enable-background: new; } .car-detail-1 { fill: #444342; } ._8-ball-bg { stroke: #ffffff; stroke-width: 2.5469; stroke-miterlimit: 10; } ._8-ball-white { fill: #ffffff; stroke: #ffffff; stroke-width: 0.8906; stroke-miterlimit: 10; } .last-ball { fill: #c13636; stroke: #ffffff; stroke-width: 4.5644; stroke-miterlimit: 10; } .ball-bump { fill: #823434; }x /** * Page layout stuff */ html, body { margin: 0; width: 100%; overflow: hidden; position: fixed; } body { background: #c6c4a1; } .wrapper { position: relative; } .controls { background: rgba(0, 0, 0, 0.6); width: 100%; padding: 1em; position: fixed; bottom: 0; } button { background: #fff; border: none; border-radius: 0.2em; color: #1d70a4; cursor: pointer; font-size: 1em; border: none; padding: 0.75em 1.25em; transition: transform 0.1s ease-out, box-shadow 0.1s ease-out; } button:hover { box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.3); transform: scale(1.01) translateY(-2px); } button:active { box-shadow: none; transform: scale(0.99); } </style> </head> <body translate="no"> <div class="wrapper"> <div class="demo"> <svg viewBox="0 0 4500 946.7"> <g id="Backgrounds"> <line class="string-bg" x1="2084.5" y1="437.6" x2="2880.1" y2="535.8" /> <line class="string-bg" x1="2405.2" y1="597.4" x2="2880.1" y2="538.8" /> <line class="string-bg" x1="2405.2" y1="597.4" x2="3200.7" y2="695.6" /> <line class="string-fg" x1="2084.5" y1="437.6" x2="2880.1" y2="535.8" /> <line class="string-fg" x1="2405.2" y1="597.4" x2="2880.1" y2="538.8" /> <line class="string-fg" x1="2405.2" y1="597.4" x2="3200.7" y2="695.6" /> <rect y="387" class="box" width="646" height="559.7" /> <rect x="1089.4" y="434.1" class="box" width="1006.1" height="512.6" /> <rect x="3200.7" y="693.7" class="box" width="1249.7" height="253" /> <rect x="2880.1" y="387.9" class="box-lid" width="10.2" height="559.7" /> <rect x="2394.1" y="486.7" class="box-lid" width="10.2" height="460" /> <rect x="4410.3" y="204.9" class="box" width="253" height="741.8" /> <rect y="387" class="box-lid" width="653.3" height="37.9" /> <rect x="1082.2" y="434.7" class="box-lid" width="1021.4" height="37.9" /> <rect x="3192.4" y="693.8" class="box-lid" width="1470.9" height="37.9" /> <rect x="4404.9" y="167" class="box-lid" width="258.4" height="37.9" /> </g> <g id="First_Dominos"> <path class="domino domino-1" d="M57.4,391.8H45.5c-2.7,0-4.9-2.2-4.9-4.9V270.4c0-2.7,2.2-4.9,4.9-4.9h11.9c2.7,0,4.9,2.2,4.9,4.9V387 C62.3,389.6,60.1,391.8,57.4,391.8z" /> <path class="domino domino-2" d="M155,391.8h-11.9c-2.7,0-4.9-2.2-4.9-4.9V270.4c0-2.7,2.2-4.9,4.9-4.9H155c2.7,0,4.9,2.2,4.9,4.9V387 C159.9,389.6,157.7,391.8,155,391.8z" /> <path class="domino domino-3" d="M252.6,391.8h-11.9c-2.7,0-4.9-2.2-4.9-4.9V270.4c0-2.7,2.2-4.9,4.9-4.9h11.9c2.7,0,4.9,2.2,4.9,4.9V387 C257.5,389.6,255.3,391.8,252.6,391.8z" /> <path class="domino domino-4" d="M350.2,391.8h-11.9c-2.7,0-4.9-2.2-4.9-4.9V270.4c0-2.7,2.2-4.9,4.9-4.9h11.9c2.7,0,4.9,2.2,4.9,4.9V387 C355.1,389.6,352.9,391.8,350.2,391.8z" /> <path class="domino domino-5" d="M447.8,391.8h-11.9c-2.7,0-4.9-2.2-4.9-4.9V270.4c0-2.7,2.2-4.9,4.9-4.9h11.9c2.7,0,4.9,2.2,4.9,4.9V387 C452.7,389.6,450.5,391.8,447.8,391.8z" /> <path class="domino domino-6 domino-last" d="M545.4,391.8h-11.9c-2.7,0-4.9-2.2-4.9-4.9V270.4c0-2.7,2.2-4.9,4.9-4.9h11.9c2.7,0,4.9,2.2,4.9,4.9V387 C550.3,389.6,548.1,391.8,545.4,391.8z" /> </g> <g id="Ball_and_String"> <line class="string-bg" x1="914" y1="379.1" x2="914.2" y2="-38.6" /> <line class="string-fg" x1="914" y1="379.1" x2="914.2" y2="-38.6" /> <circle class="ball-1" cx="914" cy="412" r="55" /> <line class="t-ball-texture t-ball-texture-1" x1="874.5" y1="373.7" x2="859.2" y2="410" /> <line class="t-ball-texture t-ball-texture-1" x1="889.2" y1="363.1" x2="861.8" y2="427.8" /> <line class="t-ball-texture t-ball-texture-1" x1="908.2" y1="356.8" x2="870.5" y2="445.9" /> <line class="t-ball-texture t-ball-texture-1" x1="924.8" y1="357.9" x2="882.9" y2="457" /> <line class="t-ball-texture t-ball-texture-1" x1="966.7" y1="412.6" x2="951.3" y2="448.9" /> <line class="t-ball-texture t-ball-texture-1" x1="964" y1="394.8" x2="936.7" y2="459.5" /> <line class="t-ball-texture t-ball-texture-1" x1="955.4" y1="376.7" x2="917.7" y2="465.8" /> <line class="t-ball-texture t-ball-texture-1" x1="942.9" y1="365.6" x2="901.1" y2="464.7" /> <line class="t-ball-texture t-ball-texture-2" x1="912.4" y1="357.6" x2="875.9" y2="372.4" /> <line class="t-ball-texture t-ball-texture-2" x1="930.2" y1="360.4" x2="865.1" y2="386.8" /> <line class="t-ball-texture t-ball-texture-2" x1="948.1" y1="369.4" x2="858.5" y2="405.7" /> <line class="t-ball-texture t-ball-texture-2" x1="959" y1="382" x2="859.4" y2="422.4" /> <line class="t-ball-texture t-ball-texture-2" x1="950" y1="450.2" x2="913.5" y2="465" /> <line class="t-ball-texture t-ball-texture-2" x1="960.7" y1="435.8" x2="895.6" y2="462.2" /> <line class="t-ball-texture t-ball-texture-2" x1="967.4" y1="416.9" x2="877.7" y2="453.2" /> <line class="t-ball-texture t-ball-texture-2" x1="966.4" y1="400.2" x2="866.8" y2="440.6" /> <line class="t-ball-texture t-ball-texture-3" x1="950.5" y1="372.9" x2="914.3" y2="357.6" /> <line class="t-ball-texture t-ball-texture-3" x1="961.1" y1="387.6" x2="896.4" y2="360.2" /> <line class="t-ball-texture t-ball-texture-3" x1="967.4" y1="406.5" x2="878.4" y2="368.9" /> <line class="t-ball-texture t-ball-texture-3" x1="966.3" y1="423.2" x2="867.2" y2="381.3" /> <line class="t-ball-texture t-ball-texture-3" x1="911.6" y1="465" x2="875.3" y2="449.7" /> <line class="t-ball-texture t-ball-texture-3" x1="929.4" y1="462.4" x2="864.7" y2="435" /> <line class="t-ball-texture t-ball-texture-3" x1="947.5" y1="453.7" x2="858.4" y2="416.1" /> <line class="t-ball-texture t-ball-texture-3" x1="958.6" y1="441.3" x2="859.6" y2="399.4" /> </g> <g id="Car"> <g> <path class="car-grey-bg" d="M1351.7,431c0,0-43.3-11.3-61.1-11.7c-17.8-0.4-131.3-3-131.3-3h-55l19.1-34.7l60.2-8.7l158.2,12.1l19.1,20.4 L1351.7,431z" /> <g class="wheel"> <circle class="tire-bg" cx="1145.5" cy=".........完整代码请登录后点击上方下载按钮下载查看
网友评论0