web上で動かすおみくじの作り方のメモ

牛乳寒天です。
先月、課題でHTML,CSSを使用したおみくじを作成する機会があったため、復習も含めメモとして残します。

流れとしては
①おみくじの初期画面を表示

最初

②「おみくじを引く」ボタンを押すとアラートを表示。

スクリーンショット 2021-11-14 19.51.55

③アラートのOKを押すと結果を表示し、ボタンも「やりなおす」に切り替わる。更に、「やりなおす」を押すとアラートが表示され、OKを押す事で違う結果が出る。

スクリーンショット 2021-11-14 19.53.47

スマホサイズにも対応するようにレスポンシブにする。

レスポンシブ対応にする

レスポンシブ対応にするには、HTMLの<meta>内に下のように記述。

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">

①の画面

背景画像はCSSにbodyで記述。
今回の場合ファイル名は「midori.png」

画像ファイルはimgフォルダ内のnoteフォルダにあるため、そこまでの経路を入れることも忘れずに。

がぞう

CSSでの記述↓

body {
   background-image : url("img/note/midori.png");
   background-size : cover;
   margin : 0;
   padding : 0;
   text-align: center;
}

background-size : cover;
→背景画像のサイズを指定。

background-size
→画面幅に収まるサイズで画像全体を表示・画面幅フルサイズで背景画像を表示などサイズを変えて表示。

margin : 0;,padding : 0;
→隅に隙間を作る事なく全面に表示。

text-align: center;
→おみくじの箱やボタンといった要素を左右中央に表示させる。

おみくじの箱、「おみくじをひく」ボタン
HTMLで、<body></body>内に記述。

<body>
   <img src="img/note/box.png" id="omikuji">
   <button id="osubtn" onclick="play()">おみくじひく</button>
   </body>

onclick="play()"
→クリックされた時に反応があるように設定。

CSS↓

#osubtn{
   left: 50%;
   transform: translateX(-50%);
   -webkit-transform: translateX(-50%);
   -ms-transform: translateX(-50%);
   position: absolute;
   margin-top: 520px;
   width: 200px;
   height: 40px;
   font-size: 20px;
   color: #FFF;
   background-color: darkred;
}

HTMLでボタンにosubtnというidを付けたので、CSSでは#osubtnの名前で色や位置、サイズを任意で指定。

②の画面

HTMLで、</body>のすぐ下に<script></script>を置き、<script></script>内にアラートやおみくじといったプログラムの設定をする。

</body>
<script>

ここに記述。

</script>

HTML↓

<script>
  function play() {
           var no = Math.floor(Math.random()*5);
           
           var image_name;
           if (no == 0) {
               image = "img/note/dai.png";
           } else if (no == 1) {
               image = "img/note/tyu.png";
           } else if (no == 2) {
               image = "img/note/shou.png";
           } else if (no == 3) {
               image == "img/note/suesue.png";
           } else {
               image = "img/note/kyo.png";
           }            
           
           alert("おみくじが出ました!さて結果は?");

function play() {}内に書いて、ボタンをクリックされた時に反応をするようにする。

ランダムで結果を表示させる為には、まずランダムな数字を作る必要がある。そのためにJavaScriptを使ってランダムの値を表示させる。
ランダムな数を表示したい時=「変数」。

Math.random()
→ランダムな数字を作る。
これは「ランダムな数を作って」とお願いするもの。
適用されると0以上1未満のランダムな小数点の値を作ってくれる。

小数ではなく、整数が欲しい場合はもう一手間加える必要がある。
小数点を整数に変換するにはMath.floor()を使う。

これは小数点以下を切り捨ててくれるものだけど、
Math.random()で作られた数は1よりも小さいので、小数点を切り捨てるとすべて0になってしまう。
その場合は作りたい一番大きな数を、Math.random()で作った値に、掛け算すればいい。掛け算には「*」を使う。

今回の場合、5つの結果を表示させたいので5を掛け算する。

「alert("おみくじが出ました!さて結果は?");」で、アラートの設定。

③の画面

「alert("おみくじが出ました!さて結果は?");」の下に記述。

document.getElementById("omikuji").src = image;
           document.getElementById("osubtn").innerHTML = "やりなおす";
       }
   </script>

document.getElementById("omikuji").src = image;
→元々おみくじの箱(画像)があった場所を、おみくじの結果の画像に切り替えるようにする。

image;はimage = "img/note/kyo.png";のimage部分。

document.getElementById("osubtn").innerHTML = "やりなおす";
→「おみくじひく」ボタンが「やりなおす」に切り替わるよう設定する。

よろしければ、サポートをよろしくお願いします。