こんにちは朱夏です。
JavaScriptの学習3日目やっていきます。
今回は、前2回の学習からガチャアプリを作ってみたいと思います。
ベースになるのは前回のおみくじアプリになります。
それではやっていきます。
コード
今回も最初にコードを置いておきます。
先ずはHTMLです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ガチャ</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <!----- ヘッダー -----> <header>ガチャ</header> <!----- ヘッダー END -----> <!----- メインコンテンツ -----> <div id="btn">クリック!</div> <h2>排出結果</h2> <div id="inbox"></div> <!----- メインコンテンツ END -----> <!----- フッター -----> <footer> <p class="">(c)test.com</p> </footer> <!----- フッター END -----> <script src="js/sample.js"></script> </body> </html>
次にCSSファイルです。
body { background: grey; } #btn { width: 200px; height: 200px; background: red; border-radius: 50%; margin: 30px; text-align: center; line-height: 200px; color: white; font-weight: bold; font-size: 30px; cursor: pointer; box-shadow: 0 10px 0 #b34139; user-select: none; } #btn:hover { opacity: 0.9; } #btn:active { box-shadow: 0 5px 0 #b34139; margin-top: 35px; margin-bottom: 25px; } .ssr { background-color: yellow; margin: 10px; width: 50px; height: 50px; border-radius: 10%; text-align: center; line-height: 50px; color: #cfcfcf; font-size: 25px; user-select: none; animation: ssr-anime 0.3s ease-in; } @keyframes ssr-anime { 0% { transform: rotate(0) scale(0); opacity: 0; } 100% { transform: rotate(360deg) scale(1); opacity: 1; } } .sr { background-color: #cfcfcf; margin: 10px; width: 50px; height: 50px; border-radius: 10%; text-align: center; line-height: 50px; color: white; font-size: 25px; user-select: none; animation: sr-anime 0.2s ease-in; } @keyframes sr-anime { 0% { transform: scale(0); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } .rare { background-color: brown; margin: 10px; width: 50px; height: 50px; border-radius: 10%; text-align: center; line-height: 50px; color: white; font-size: 25px; user-select: none; animation: r-anime 0.2s ease-in; } @keyframes r-anime { 0% { opacity: 0; } 100% { opacity: 1; } } #inbox { display: flex; flex-wrap: wrap; }
最後にJavaScriptファイルです。
'use strict' { const btn = document.getElementById('btn') btn.addEventListener('click', () => { const n = Math.random(); const gacha = document.createElement('div') if (n < 0.05) { btn.textContent = 'SSR'; gacha.textContent = "SSR"; gacha.classList.add('ssr'); } else if (n < 0.2){ btn.textContent = 'SR'; gacha.textContent = "SR"; gacha.classList.add('sr'); } else { btn.textContent = 'R'; gacha.textContent = "R"; gacha.classList.add('rare'); } document.getElementById('inbox').appendChild(gacha); }) }
解説
今回のガチャアプリは、おみくじの発展形として、以下2つの実装に挑戦しました。
-
- ガチャ結果の履歴表示
- 結果表示のアニメーション
ガチャ結果の履歴表示
ガチャ結果を表示させるのには、1回目で使用していた”document.createElement(‘div’)”を使用しました。
「divを作成、classを付与、divにテキスト表示」をレアリティごとに作成して、ガチャ結果を追加するコードを書きました。
結果表示のアニメーション
こちらも1回目で学習した内容を応用したものになります。
アニメーションに関してはJavaScriptではなくCSSで実装されています。
今回新たに学習で来たポイントとしては、”@keyframes”についてですね。
こちらのサイトを参考にしながら、レアリティごとに動きを変化させるコードを書きました。
あとがき
今回はガチャアプリと履歴を実装してみました。
1回目と2回目に学習した内容を合体させたようなものだったので、思ったよりはすんなり完成させる事が出来ました。
この調子で次回も頑張っていきたいと思います。
今回はここまでです。
次回もよろしくお願いします。