最近、HTML + CSS + JavaScript を使ってAndroidアプリ制作にチャレンジしています。
その過程で、シンプルですが体力ゲージを作成したので、ブログに掲載します。
完成したライフゲージ(体力ゲージ)
出来上がったライフゲージはこんな感じです。結構単純です・・・
動作確認用に、増加ボタン(+)、減少ボタン(-)を設置しましたので押してみてください。
+
–
ソースコード
コードはこんな感じです。
こんなのでよければご自由にご利用ください。
HTML
<div id="life-frame"> <div id="life-bar"></div> <div id="life-mark"></div> </div> <div id="btns-wrap"> <div id="increase-btn" onclick="alterLife( 10 )">+</div> <div id="decrease-btn" onclick="alterLife( -10 )">-</div> </div>
CSS
#life-frame { margin: 0 auto; width: 80%; background-color: rgba(10, 0, 50, 0.6); display: flex; padding: 3px 3px; } #life-bar { height: 3px; background-color: rgb(0, 255, 255); transition: 300ms } #life-mark { width: 3px; height: 3px; border-radius: 3px; background-color: rgb(255, 255, 255); filter: saturate(500%); box-shadow: 0 0 5px 3px rgb(200, 255, 255), 0 0 7px 7px rgb(100, 255, 255); } #btns-wrap { width: 100px; margin: 0 auto; display: flex; justify-content: space-around; } #increase-btn,#decrease-btn { margin-top: 10px; width: 30px; height: 30px; border-radius: 5px; color: white; background-color: dodgerblue; text-align: center; line-height: 30px; box-shadow: 2px 2px 4px rgba(0,0,0,0.3); user-select: none; } #increase-btn:active,#decrease-btn:active { transform: translate(2px,2px); box-shadow: none; }
JavaScript
const lifeBar = document.getElementById('life-bar') // ライフバー const lifeMark = document.getElementById('life-mark') // ライフの光部分 const increaseBtn = document.getElementById('increase-btn') // + ボタン const decreaseBtn = document.getElementById('decrease-btn') // - ボタン let life = 100 // ライフ初期値 lifeBar.style.width = "100%" // ライフ初期幅 // *** ライフ変更処理 *** function alterLife( value ){ // lifeの値を算出する life += value if ( life <= 0 ){ // 算出の結果 0 以下になった場合 life = 0 // 0.3秒後に光部分を非表示にする setTimeout(function(){ lifeMark.style.visibility = 'hidden' }, 300) } else { // 算出の結果 100 を超過した場合 if ( life > 100 ) { life = 100 } // 光部分を表示する lifeMark.style.visibility = 'visible' } // スタイル(幅)を更新する lifeBar.style.width = life + "%" }
まとめ
ライフ(体力)ゲージをHTML/CSS/JSで作成している記事を調べたのですが、meter要素やprogress要素の解説が多く、自分の好みの見た目にできなかったので、自作してみました。
拙い出来ではありますが、だれかの役に立てば幸いです。
コメント