react实现砸地鼠小游戏效果代码
代码语言:html
所属分类:游戏
代码描述:react实现砸地鼠小游戏效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <link href="https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap" rel="stylesheet"> <style> :root { --controls: hsl(38, 96%, calc((55 + var(--lightness, 0)) * 1%)); --controls-secondary: hsl(55, 100%, 50%); --controls-color: hsl(0, 0%, 100%); --sky: hsl(204, 80%, 80%); --grass: hsl(98, 40%, 50%); --dirt: hsl(35, 40%, 20%); } * { box-sizing: border-box; } body { min-height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; margin: 0; font-family: 'Fredoka One', cursive; background: var(--sky); } .moles { display: inline-grid; grid-template-rows: repeat(2, auto); grid-template-columns: repeat(3, auto); grid-gap: 0 2vmin; cursor: none; } .moles > *:nth-of-type(4), .moles > *:nth-of-type(5) { transform: translate(50%, -25%); } main { height: 100vh; width: 100vw; display: grid; place-items: center; background: linear-gradient(var(--sky) 0 44%, var(--grass) 44%); } button { --controls: hsl(38, 96%, calc((55 + var(--lightness, 0)) * 1%)); background: var(--controls); color: var(--controls-color); padding: 1rem 2rem; font-family: 'Fredoka One', cursive; font-weight: bold; font-size: 1.75rem; border-radius: 1rem; border: 4px var(--controls-color) solid; white-space: nowrap; cursor: pointer; } button:hover { --lightness: 5; } button:active { --lightness: -15; } .celebration { font-size: 4rem; line-height: 1; margin: 0; padding: 0; text-transform: uppercase; text-align: center; } .word { display: inline-block; white-space: nowrap; } .celebration .char { display: inline-block; color: hsl(calc((360 / var(--char-total)) * var(--char-index)), 70%, 65%); -webkit-animation: jump 0.35s calc(var(--char-index, 0) * -1s) infinite; animation: jump 0.35s calc(var(--char-index, 0) * -1s) infinite; } .countdown-number { font-size: 10rem; color: var(--dirt); -webkit-text-stroke: 0.25rem var(--controls-color); position: fixed; top: 50%; left: 50%; z-index: 12; margin: 0; padding: 0; transform: translate(-50%, -50%); display: 'none'; } @-webkit-keyframes jump { 50% { transform: translate(0, -25%); } } @keyframes jump { 50% { transform: translate(0, -25%); } } .icon-button { height: 48px; width: 48px; outline: transparent; background: none; border: 0; display: grid; place-items: center; padding: 0; margin: 0; } .mute-button { position: fixed; bottom: 0; right: 0; z-index: 2; } .mute-button:hover ~ .mallet, .end-button:hover ~ .mallet { display: none; } .end-button { position: fixed; top: 0; right: 0; z-index: 2; } .game-info { position: fixed; top: 1rem; left: 1rem; display: grid; grid-template-columns: repeat(2, auto); grid-template-rows: repeat(2, auto); align-items: center; grid-gap: 0.5rem 1rem; z-index: 2; background: var(--controls-color); border: 4px solid var(--controls); border-radius: 1rem; padding: 1rem; width: 190px; } .info-screen { z-index: 2; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; justify-content: center; flex-direction: column; } .results { background: var(--controls-color); padding: 2rem; border: 4px solid var(--controls); border-radius: 1rem; } .info-screen > * + * { margin-top: 1rem; } .icon { fill: hsl(35, 50%, 28%); stroke-width: 20px; overflow: visible; height: 24px; width: 24px; } @media(min-width: 768px) { .end-button { top: 1rem; right: 1rem; } .mute-button { bottom: 1rem; right: 1rem; } .icon { height: 48px; width: 48px; } } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .info__text { font-size: clamp(1rem, 5vmin, 2rem); line-height: 1; color: var(--dirt); margin: 0; } .boring-text { font-size: 2rem; text-align: center; } .title { -webkit-text-stroke: 0.1vmin var(--controls-color); font-size: 6rem; font-weight: bold; color: transparent; background: linear-gradient(40deg, var(--controls), var(--controls-secondary)); -webkit-background-clip: text; background-clip: text; text-align: center; display: inline-block; line-height: 0.75; margin: 0 0 4rem 0; padding: 0; transform: rotate(-15deg); } .title span { display: block; } .title span:nth-of-type(2) { transform: translate(0, -10%) rotate(15deg); color: var(--controls); } .hole { fill: hsl(0, 0%, 12%); } .hole__lip { fill: hsl(38, 20%, 50%); } .mole__feature { fill: hsl(0, 0%, 10%); } .mole__eyes--crossed { display: none; } .mole__mole { display: none; } .specs__lens { fill: hsla(198, 80%, calc((80 - (var(--shades, 0) * 75)) * 1%), calc(0.5 + (var(--shades, 0) * 0.5))); stroke: hsl(var(--accent), 25%, calc((30 - (var(--shades, 0) * 30)) * 1%)); } .cap__accent { fill: hsl(var(--accent, 10), 80%, 50%); } .cap__body { fill: hsl(0, 0%, 5%); } .specs__glare { fill: hsla(0, 0%, 100%, calc(0.5 + (var(--shades, 0) * 0.25))); } .specs__bridge { stroke: hsl(var(--accent), 25%, calc((30 - (var(--shades, 0) * 30)) * 1%)); } .mole__hole { width: 20vmin; height: 20vmin; position: relative; cursor: none; } .mole__hole * { cursor: none; } .mole__body { fill: hsl(var(--hue), calc((10 + (var(--golden, 0) * 40)) * 1%), calc(var(--lightness, 65) * 1%)); } .mole__white { fill: hsl(40, 80%, calc((98 - (var(--golden, 0) * 15)) * 1%)); } .mole__whiskers { stroke: hsl(40, calc((0 + (var(--golden, 0) * 35)) * 1%), calc((5 + (var(--golden, 0) * 40)) * 1%)); } .mole__shadow { fill: hsl(var(--hue), 16%, 43%); } .mole__nose { fill: hsl(calc(10 + (var(--golden, 0) * 30)), 90%, calc((88 - (var(--golden, 0) * 35)) * 1%)); } .mole { position: absolute; height: 100%; width: 100%; } .mole__whack { height: 100%; width: 100%; border: 0; opacity: 0; transform: translate(0, 0%); position: absolute; top: 0; left: 0; } .mole__points-holder { position: absolute; transform: rotate(calc(var(--angle, 0) * 1deg)); transform-origin: 50% 200%; pointer-events: none; position: fixed; z-index: 10; } .mole__points { font-size: clamp(2rem, 8vmin, 18rem); pointer-events: none; font-weight: bold; color: hsl(var(--accent, 0), 90%, 75%); margin: 0; transform: translate(-50%, -200%); -webkit-text-stroke: 0.1vmin hsl(var(--accent), 50%, 35%); } .mallet { height: 0px; width: 0px; background: green; pointer-events: none; position: fixed; top: calc(var(--y) * 1px); left: calc(var(--x) * 1px); z-index: 10; transform: translate(-50%, -50%); display: none; } .mallet.........完整代码请登录后点击上方下载按钮下载查看
网友评论0