カテゴリー
【Sassで解説】Cssミニゲームで開始画面と終了画面を(もちろんcssだけで)実装する
※ 当ページには【広告/PR】を含む場合があります。
2021/06/01
TL;DR
1. form要素とinput要素のreset型
2. z-index属性で要素の画面の上げ下げ
3. displayやvisibility属性で要素の表示/非表示の切り替え
もっとも簡単な開始/終了画面の実装
index.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form id="game-wrapper">
<input id="reset" type="reset">
<input id="start" type="checkbox">
<label class="stage stage--op" for="start">クリックしてゲーム開始!</label>
<div class="stage stage--main">
<p>このゲームは3秒で終わります。</p>
</div>
<label class="stage stage--end" for="reset">リセットしてニューゲーム</label>
</form>
</body>
</html>
<input type="reset">
...
<form id="game-wrapper">
<input id="reset" type="reset">
<!-- ゲームの中身 -->
<label class="stage stage--end" for="reset">リセットしてニューゲーム</label>
</form>
...
...
<input id="start" type="checkbox">
<label class="stage stage--op" for="start">クリックしてゲーム開始!</label>
<div class="stage stage--main">
<p>このゲームは3秒で終わります。</p>
</div>
<label class="stage stage--end" for="reset">リセットしてニューゲーム</label>
...
<input type="checkbox">
~
...
#start:checked ~ .stage--op { /* stage--opクラスのスタイル */ }
#start:checked ~ .stage--main { /* stage--mainクラスのスタイル */ }
#start:checked ~ .stage--end {/* stage--endクラスのスタイル */}
...
#game-wrapper {
width: 100%;
height: 300px;
background-color: darkgray;
box-sizing: border-box;
position: relative;
input { display: none; }
.stage {
position: absolute;
display: block;
width: 100%;
height: 100%;
font-size: 24px;
&--op {
display: flex;
align-items: center;
justify-content: center;
//👇解説ポイント①
z-index: 0;
}
&--main {
display: none;
font-size: 18px;
//👇解説ポイント①
z-index: -1;
p {
color: blue;
margin: 0;
padding: 0;
}
}
&--end {
display: none;
background: darkgray;
color: white;
//👇解説ポイント①
z-index: -2;
}
}
#start:checked ~ {
.stage--op {
display: none;
}
.stage--main {
display: block;
//👇解説ポイント①
z-index: 1;
}
.stage--end {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
//👇解説ポイント②
animation: ending 3s forwards;
}
}
@keyframes ending {
0% { visibility: hidden; }
99% { visibility: hidden; }
100% {
visibility: visible;
//👇解説ポイント①
z-index: 1;
}
}
}
解説ポイント①
.stage { ... &--op { ...
.stage .stage--op { ...
z-index
ゲーム開始前 | ゲーム開始後 | ゲーム終了時 | |
---|---|---|---|
.stage--op | 0 | 0(非表示) | 0(非表示) |
.stage--main | -1(非表示) | 1 | 1 |
.stage--end | -2(非表示) | -2(秘匿) | 1 |
解説ポイント②
forwards
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー