js+css实现青蛙吃害虫游戏代码
代码语言:html
所属分类:游戏
代码描述:js+css实现青蛙吃害虫游戏代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1.0, minimum-scale=1.0, maximum-scale=1.0"> <style> /* NOTE: The styles were added inline because Prefixfree needs access to your styles and they must be inlined if they are on local disk! */ @keyframes squiggly { 0% { filter: url("#squiggly-0"); } 25% { filter: url("#squiggly-1"); } 50% { filter: url("#squiggly-3"); } 100% { filter: url("#squiggly-4"); } } html, body { width: 100%; height: 100%; overflow: hidden; background: #fff; color: #000; font-size: 2.5vh; } body { font-family: arial; } body.dark { color: #fff; } .card { overflow: hidden; max-width: 20em; padding: 1em; margin: 0 auto 1em; background: rgba(255, 255, 255, 0.25); border: 1px solid #000; border-radius: 0.25em; } .btn { display: block; margin: 0 auto 0.5em; padding: 1em; max-width: 20em; font-weight: bold; letter-spacing: 1px; text-decoration: none !important; text-transform: uppercase; text-shadow: none !important; background: #fff; transition: all 0.2s; border: 1px solid rgba(0, 0, 0, 0.5); border-radius: 4px; color: #000; } .checkbox { display: inline-block; font-weight: bold; text-transform: uppercase; } .checkbox input { display: none; } .checkbox span { display: block; padding: 1em; background: #fff; border: 1px solid #bbb; border-radius: 4px; color: #000; transition: all 0.2s; cursor: pointer; } .checkbox input:checked + span { border-color: #000; } .play .text { font-size: 2em; } .scoreboard .scoreboard-list { display: inline-block; padding: 0; margin: 0; text-align: right; } .game .hud { padding: 0 1rem; font-size: 1.5rem; letter-spacing: 1px; } .dark .game .hud { text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 0 rgba(0, 0, 0, 0.1), 1px 0 0 rgba(0, 0, 0, 0.1), -1px 0 0 rgba(0, 0, 0, 0.1), 1px 1px 0 rgba(0, 0, 0, 0.1), -1px -1px 0 rgba(0, 0, 0, 0.1), -1px 1px 0 rgba(0, 0, 0, 0.1), 1px -1px 0 rgba(0, 0, 0, 0.1); } .game .hud .label { display: block; font-size: 0.6em; font-weight: normal; text-transform: uppercase; } .game .hud .value { font-size: 2em; font-weight: bold; line-height: 1; } .game .time { float: left; } .game .score { float: right; } .dark .win { text-shadow: 0 1px 0 black, 0 -1px 0 black, 1px 0 0 black, -1px 0 0 black, 1px 1px 0 black, -1px -1px 0 black, -1px 1px 0 black, 1px -1px 0 black; } .win .score { float: left; } .win .best { float: right; } .win .label { display: block; font-size: 0.6em; font-weight: normal; text-transform: uppercase; } .win .value { font-size: 2em; font-weight: bold; line-height: 1; } .win .highscore { display: block; clear: both; } .win .highscore.is-hidden { display: none; } .screen { position: fixed; z-index: 10; top: 0; left: 0; right: 0; bottom: 0; height: 100%; padding: 1em; overflow: hidden; text-align: center; visibility: hidden; opacity: 0; transform: translateY(-1em); transition: all 0.2s 0.1s; } .screen.is-active { visibility: visible; opacity: 1; transform: translateY(0); } .screen.game { padding-left: 0; padding-right: 0; background: none; } .screen h1 { text-transform: uppercase; } .sky { position: fixed; top: 0; right: 0; bottom: 0; left: 0; transition: all 0.5s; background: #fff; cursor: pointer; } .outlines .sky { background: #fff; } .light .sky { background: #aedef7; } .dark .sky { background: #002; } .sky:before { position: fixed; top: 0; left: 0; bottom: 0; right: 0; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.0001), #fff); opacity: 0.5; content: ''; transition: all 0.2s; } .dark .sky:before { opacity: 0.3; } @keyframes twinkle { 0% { border-left-color: white; border-right-color: rgba(255, 255, 255, 0); } 33.3334% { border-left-color: rgba(255, 255, 255, 0); border-right-color: white; } 66.6667% { border-left-color: rgba(255, 255, 255, 0); border-right-color: white; } 100% { border-left-color: white; border-right-color: rgba(255, 255, 255, 0); } } .stars { position: fixed; left: 2em; right: 2em; top: 4em; height: 2px; transform: rotate(40deg); border-width: 0 2px; border-style: solid; border-color: #fff; opacity: 0; transform: translateY(-5em); transition: all 0.5s; will-change: opacity; animation: twinkle 6s infinite alternate; } .dark .stars { opacity: 1; transform: translateY(0); } .stars:before, .stars:after { position: fixed; top: 6em; left: 2em; right: 0em; height: inherit; border: inherit; transform: rotate(-15deg); opacity: 0.5; content: ''; will-change: opacity; } .stars:before { animation: twinkle 3s infinite alternate-reverse; } .stars:after { top: 0.5em; left: 3em; right: 6em; opacity: 1; transform: rotate(-30deg); animation: twinkle 6s infinite alternate; } .moon { position: fixed; bottom: 20em; left: 50%; width: 10em; height: 10em; background: #fff; border-radius: 50%; transition: all 0.5s ease-in-out; transform: translateY(2em); box-shadow: 0 0 4em #fff, 0 0 12em #fff, 0 0 0 6em rgba(211, 230, 235, 0.025), 0 0 0 12em rgba(211, 230, 235, 0.025), 0 0 0 18em rgba(211, 230, 235, 0.025); opacity: 0; } .moon:before, .moon:after { position: absolute; top: 20%; left: 10%; width: 30%; height: 30%; border-radius: 50%; background: rgba(0, 0, 0, 0.05); box-shadow: inset 0 0 1em rgba(0, 0, 0, 0.1); content: ''; opacity: 0.1; } .moon:after { top: auto; left: auto; bottom: 10%; right: 10%; width: 50%; height: 50%; opacity: 0.1; } .dark .moon { transform: translateY(0); opacity: 1; } .mountains { opacity: 0.3; } .dark .mountains { opacity: 0.9; } .mountain { position: fixed; left: -100%; bottom: -3em; width: 200%; height: 14em; background: #fff; border-radius: 0 100% 0 0; transition: all 0.5s ease-in-out; } .light .mountain { background: #a4c18b; } .dark .mountain { background: #0a0a2a; } .mountain--2 { left: auto; right: -10%; height: 10em; border-radius: 100% 0 0 0; } .grass { display: none; position: fixed; left: 0; right: 0; bottom: 0; height: 8em; background: #fff; transition: all 0.5s ease-in-out; } .light .grass { background: #a7cc67; } .dark .grass { background: #0f0f2f; } .water { position: fixed; z-index: 2; left: 0; right: 0; bottom: 0; height: 3em; transition: all 0.5s ease-in-out; background: #fff; } .light .water { background: #5f96d5; } .dark .water { background: #0f0f2f; } .tree { position: absolute; z-index: 3; right: 38%; top: -6.8em; width: 1.5em; height: 10em; transition: all 0.5s; background: #fff; transform: scale(0.2, 0.2); transform-origin: 50% 100%; } .light .tree { background: #6f4817; } .dark .tree { background: #0a0a2a; } .tree:before, .tree:after { position: absolute; left: 50%; bottom: 2em; display: inline-block; width: 0; transform: translateX(-50%); transition: all 0.5s ease-in-out; border-width: 0 6em 12em; border-style: solid; border-color: transparent; border-radius: 0 0 100% 100% / 0 0 1em 1em; border-bottom-color: #fff; content: ''; } .light .tree:before, .light .tree:after { border-bottom-color: #2d5e3b; } .dark .tree:before, .dark .tree:after { border-bottom-color: #0a0a2a; } .tree:after { width: 0; bottom: 9em; border-width: 0 3em 6em; } .tree--2 { left: auto; right: 1.5em; top: -5.9em; transform: scale(0.2, 0.2); } .tree--3 { top: -5.5em; right: 47%; transform: scale(0.4, 0.4); } .lily { @extends .shadow; position: fixed; z-index: 3; left: 50%; bottom: 0.5em; height: 1.5em; width: 12em; transform: translateX(-50%); background: #fff; border: 1px solid #000; border-bottom: 0; border-radius: 50% 50% 0 0 / 100% 100% 0 0; } .light .lily { background: #777; } .dark .lily { background: #223; } .lily--2 { left: -9em; bottom: 5em; border: none; animation-delay: 2s; opacity: 0.6; transform: scale(0.5, 0.3); } .lily--3 { right: -7em; left: auto; bottom: 6em; border: none; animation-delay: -2s; opacity: 0.4; transform: scale(0.2, 0.15); } .shadow, .fly, .fly:before, .fly:after, .player .body, .player .belly, .player .arms .arm, .player .legs .leg, .player .eyes .eye, .player .tongue-inner { box-shadow: none; } .flies { display: flex; flex-wrap: wrap; width: 100%; overflow: hidden; } .flies .path { flex: 1 1 50%; padding: 1em 0; text-align: center; transition: transform 0.2s; will-change: transform; } .flies .path:nth-child(odd) { transform: translateX(-100%); } .flies .path:nth-child(even) { transform: translateX(100%); } .flies .path.is-active:nth-child(odd) { transform: translateX(-20%); } .flies .path.is-active:nth-child(even) { transform: translateX(20%); } .flies .path.is-hidden { visibility: hidden; } .target { display: inline-block; width: 4em; height: 4em; line-height: 4em; text-align: center; background: rgba(255, 255, 255, 0.05); border-radius: 50%; } .fly { z-index: 99; display: inline-block; width: 0.8em; height: 0.8em; border-radius: 50%; background: #000; border: 1px solid #000; will-change: transform; transform: translateY(50%); } .fly:before, .fly:after { position: absolute; z-index: -1; bottom: 50%; width: 0.8em; height: 0.5em; border-radius: 60%; background: #fff; border: 1px solid #000; will-change: transform; content: ''; } .fly:before { right: 60%; transform: rotate(15deg); transform-origin: 100% 50%; animation: flapLeft 0.08s infinite; } .fly:after { left: 60%; transform: rotate(-15deg); transform-origin: 0% 50%; animation: flapRight 0.08s infinite; } .fly--dead { animation: none; } @keyframes fly { from { transform: translateX(-30em); } to { transform: translateX(30em); } } @keyframes flapLeft { from { transform: rotate(-15deg); } to { transform: rotate(25deg); } } @keyframes flapRight { from { transform: rotate(25deg); } to { transform: rotate(-15deg); } } @keyframes float { 0% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(0.2em); } 100% { transform: translateX(-50%) translateY(0); } } .player { z-index: 99999; position: absolute; left: 50%; bottom: 2em; display: inline-block; font-size: 0.9rem; transform: translateX(-50%); } .player .body { position: relative; width: 6.5em; height: 9.75em; transform: translateY(0); transition: all 0.2s; background: #fff; border-radius: 4em 4em 4em 4em / 3em 3em 2em 2em; border: 1px solid black; will-change: transform; } .light .player .body { background: #9fb761; } .dark .player .body { background: #7f9761; } .player.is-active .body { animation: body 0.25s; } .player .belly { position: absolute; z-index: 1; left: 50%; height: 50%; bottom: -0.5em; left: 0.25em; right: 0.25em; background: #fff; border-bottom: 1px solid #000; border-radius: 0 0 50% 50% / 0 0 1em 1em; } .light .player .belly { background: #f8efdf; } .dark .player .belly { background: #f8efdf; } .player .crown { display: none; z-index: -10; position: absolute; bottom: 100%; left: 50%; margin-bottom: 1px; border-width: 2em 1.5em 0; border-style: solid; border-color: transparent gold gold; transform: translateX(-50%); } .player .crown:before { position: absolute; bottom: 0; left: -1em; border-width: 0 1em 2em; border-style: solid; border-color: gold transparent; content: ''; } .player .arms { position: absolute; z-index: 2; left: 0; right: 0; bottom: -0.5em; will-change: transform; } .player .arms .arm { position: absolute; bottom: 0em; width: 2.5em; height: 4em; background: #fff; border: 1px solid black; } .light .player .arms .arm { background: #9fb761; } .dark .player .arms .arm { background: #7f9761; } .player .arms .arm:before { position: absolute; top: -2.5em; width: 1em; height: 2.75em; background: #fff; border: 1px solid black; border-bottom: none; content: ''; } .light .player .arms .arm:before { background: #9fb761; } .dark .player .arms .arm:before { background: #7f9761; } .player .arms .arm .hand { position: absolute; bottom: -0.25em; width: 2em; height: 0.5em; font-size: 1.25em; background: #fff; border: 1px solid black; border-radius: 50% 50% 0 0 / 100% 100% 0 0 !important; } .light .player .arms .arm .hand { background: #9fb761; } .dark .player .arms .arm .hand { background: #7f9761; } .player .arms .arm .hand .toe { position: absolute; bottom: -0.25em; width: 0.5em; height: 0.5em; background: #fff; border: 1px solid black; border-radius: 50%; } .light .player .arms .arm .hand .toe { background: #9fb761; } .dark .player .arms .arm .hand .toe { background: #7f9761; } .player .arms .arm .hand .toe:first-child { left: -0.25em; } .player .arms .arm .hand .toe:nth-child(2n) { z-index: 2; left: 50%; transform: translateX(-50%); } .player .arms .arm .hand .toe:last-child { right: -0.25em; } .player .arms .arm--left { left: -1em; margin-left: -2px; border-radius: 0 100% 0 70%; } .player .arms .arm--left:before { left: -1px; border-right: none; border-radius: 100% 0 0 0; } .player .arms .arm--left .hand { left: 0.5em; border-left: 0; border-radius: 0 100% 0 0; } .player .arms .arm--right { right: -1em; margin-right: -2px; border-radius: 100% 0 70% 0; } .player .arms .arm--right:before { right: -1px; border-left: none; border-radius: 0 100% 0 0; } .player .arms .arm--right .hand { right: 0.5em; border-right: 0; border-radius: 100% 0 0 0; } .player.is-active .arms { animation: arms 0.25s; } .player .legs { position: absolute; left: 0; right: 0; bottom: -0.5em; } .player .legs .leg { position: absolute; z-index: -1; bottom: 0; width: 6em; height: 5em; transform: rotate(0); transform-origin: 50% 100%; transition: all 0.2s; background: #fff; border: 1px solid black; will-change: transform; } .light .player .legs .leg { background: #718644; } .dark .player .legs .leg { background: #516644; } .player .legs .leg--left { left: -2.5em; border-radius: 25% 75% 25% 75%; } .player .legs .leg--right { right: -2.5em; border-radius: 75% 25% 75% 25%; } .player.is-active .leg--left { animation: leftLeg 0.25s; } .player.is-active .leg--right { animation: rightLeg 0.25s; } .player .eyes { position: absolute; z-index: -5; top: 0em; left: 0em; right: 0em; } .player .eyes .eye { position: absolute; top: 0em; display: inline-block; width: 2.3em; height: 2.3em; background: #fff; border: 1px solid black; border-radius: 50%; overflow: hidden; } .player .eyes .eye--left { left: -0em; } .player .eyes .eye--right { right: -0em; } .player .eyes .eye:before, .player .eyes .eye:after { position: absolute; z-index: 6; left: 0; width: 100%; height: 50%; transform: translateY(1px); transition: all 0.2s; background: #fff; border-top: 1px solid #000; content: ''; will-change: transform; } .light .player .eyes .eye:before, .light .player .eyes .eye:after { background: #718644; } .dark .player .eyes .eye:before, .dark .player .eyes .eye:after { background: #516644; } .player .eyes .eye:before { bottom: 100%; margin-bottom: 1px; } .player .eyes .eye:after { top: 100%; } .player .eyes .eye:hover:after { transform: translateY(-98%); } .player .eyes .pupil { position: absolute; top: 50%; left: 50%; width: 0.4rem; height: 0.4rem; margin: -0.2em 0 0 -0.2em; transform: translate(0, 0); transition: all 0.2s; background: #000; border-radius: 4em; will-change: transform; overflow: hidden; } .player .mouth { position: absolute; z-index: 6; top: 3.25em; left: 0.5em; right: 0.5em; height: 2.25em; background: #000; border-radius: 0; border: 1px solid black; border-top: 0; border-bottom: 0; } .player .mouth:before { position: absolute; top: 1em; left: 0.5em; right: 0.5em; bottom: 0; border-radius: 50% 50% 0 0 / 100% 100% 0 0; background: #fff; content: ''; } .light .player .mouth:before { background: #c8725b; } .dark .player .mouth:before { background: #a8525b; } .player .mouth .top-lip { position: absolute; left: -0.25em; right: -0.25em; bottom: 100%; height: 0; background: #fff; border-bottom: 1px solid #000; } .light .player .mouth .top-lip { background: #9fb761; } .dark .player .mouth .top-lip { background: #7f9761; } .player .mouth .bottom-lip { position: absolute; z-index: 10; top: -1px; left: -0.25em; right: -0.25em; height: 2.5em; margin-left: -1px; margin-right: -1px; transform: translateY(0); transition: all 0.25s; background: #fff; border-top: 1px solid #000; will-change: transform; border-radius: 0; content: ''; } .light .player .mouth .bottom-lip { background: #f8efdf; } .dark .player .mouth .bottom-lip { background: #f8efdf; } .player .mouth .bottom-lip:after { display: none; position: absolute; top: 0.5em; left: 1.5em; right: 1.5em; height: 0.25em; border-bottom: 1px solid #000; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0