ブラウザの戻る・進むボタンをHTMLのボタンで表示し、画面の下部に固定したスマホ風UIを作成してみます。
HTML部分
以下のように実装します。
<!-- ページコンテンツ -->
<div class="navigation-buttons">
<button onclick="history.back()">戻る</button>
<button onclick="history.forward()">進む</button>
</div>
ナビゲーションボタンを表示するためのコードです。
<div class="navigation-buttons">
は、ナビゲーションボタンを含む要素で、CSSクラスnavigation-buttons
が適用されます。<button onclick="history.back()">戻る</button>
は、「戻る」ボタンを表します。このボタンがクリックされると、onclick
イベントハンドラが呼び出され、history.back()
メソッドが実行されます。このメソッドは、ブラウザの履歴を1つ前に戻らせます。<button onclick="history.forward()">進む</button>
は、「進む」ボタンを表します。このボタンがクリックされると、onclick
イベントハンドラが呼び出され、history.forward()
メソッドが実行されます。このメソッドは、ブラウザの履歴を1つ進めます。
このHTMLコードは、ページ下部にナビゲーションボタンを表示し、ボタンをクリックするとブラウザの履歴を操作できるようになります。
CSS部分
以下のように実装します。
.navigation-buttons {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background-color: #f0f0f0;
display: flex;
justify-content: space-around;
padding: 10px;
box-sizing: border-box;
}
.navigation-buttons button {
background-color: #e0e0e0;
border: none;
color: #333;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
border-radius: 4px;
}
.navigation-buttons
は、ナビゲーションボタンを含む要素に対するスタイルです。position: fixed
で要素の位置を画面に固定し、bottom: 0
とleft: 0
で画面の下部左端に配置します。width: 100%
で要素の横幅を画面いっぱいに広げます。background-color: #f0f0f0
で要素の背景色を淡いグレーに設定しています。display: flex
でフレックスボックスレイアウトを使用し、justify-content: space-around
で子要素(ボタン)を等間隔で並べます。padding: 10px
で要素の内側に10pxの余白を設け、box-sizing: border-box
でpaddingとborderが要素の幅に含まれるようにしています。
.navigation-buttons button
は、ナビゲーションボタン自体に対するスタイルです。background-color: #e0e0e0
でボタンの背景色を淡いグレーに設定しています。border: none
でボタンの枠線を無くします。color: #333
でボタンのテキスト色を濃いグレーに設定しています。padding: 10px 20px
でボタンの内側に上下10px、左右20pxの余白を設けています。text-align: center
でボタンのテキストを中央揃えにしています。text-decoration: none
でボタンのテキストからunderlineを削除しています。display: inline-block
でボタンをインラインブロック要素として扱います。font-size: 16px
でボタンのフォントサイズを16pxに設定しています。border-radius: 4px
でボタンの角を4pxの半径で丸めています。
このCSSコードを適用すると、画面の下部に淡いグレーの背景で等間隔に並んだナビゲーションボタンが表示され、ボタン自体は淡いグレーの背景色と丸みを帯びた角で、テキストは濃いグレーで中央揃えになります。スマホ風のシンプルでミニマルなUIデザインとなっています。
JavaScript部分
ページ読み込み時に戻る・進むボタンの状態を更新、ブラウザの履歴が変更された際にボタンの状態を更新します。
// ページ読み込み時に戻る・進むボタンの状態を更新
window.onload = function() {
updateNavigationButtons();
}
// ブラウザの履歴が変更された際にボタンの状態を更新
window.addEventListener('popstate', function() {
updateNavigationButtons();
});
function updateNavigationButtons() {
var backButton = document.querySelector('.navigation-buttons button:first-child');
var forwardButton = document.querySelector('.navigation-buttons button:last-child');
backButton.disabled = !window.history.length;
forwardButton.disabled = !window.history.forwardLength;
}
updateNavigationButtons()
関数は、実際にナビゲーションボタンの状態を更新する処理を行います。document.querySelector()
を使って、「戻る」ボタンと「進む」ボタンの要素を取得しています。backButton.disabled
とforwardButton.disabled
を設定することで、ボタンの無効化/有効化を制御しています。!window.history.length
は、履歴が1つしかない場合にtrueになり、「戻る」ボタンを無効化します。!window.history.forwardLength
は、履歴を進める余地がない場合にtrueになり、「進む」ボタンを無効化します。
まとめ
このコードにより、ページ読み込み時と履歴が変更されたタイミングで、ナビゲーションボタンの状態が自動的に更新されます。履歴を戻れる場合は「戻る」ボタンが有効に、進める場合は「進む」ボタンが有効になり、不要な状態ではボタンが無効化されます。