無理しないでゆっくり休んでね!

JavaScriptでフルスクリーンナビゲーションを実装する方法

とりあえずデモを確認してください。

デモは50%です。

以下のメニューアイコンをクリックしてナビゲーションを開きます。

☰ 開く

サンプルコード

HTML

<div id="mySidenav" class="sidenav">
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>
  <a href="#">紹介</a>
  <a href="#">サービス</a>
  <a href="#">アクセス</a>
  <a href="#">お問い合わせ</a>
</div>

<span style="font-size:30px;cursor:pointer" onclick="openNav()">☰ 開く</span>

mySidenav というIDの要素は、サイドバーメニューを定義しています。

closebtn クラスのリンクをクリックすることで、サイドバーを閉じることができます。

また、&#9776;はハンバーガーアイコンを表しています。このアイコンをクリックすることでサイドバーが開きます。

CSS

.sidenav {
    height: 100%;
    width: 0;
    position: fixed;
    z-index: 1;
    top: 0;
    left: 0;
    background-color: #111;
    overflow-x: hidden;
    transition: 0.5s;
    padding-top: 60px;
    text-align:center;
}

.sidenav a {
    padding: 8px 8px 8px 32px;
    text-decoration: none;
    font-size: 25px;
    color: #818181;
    display: block;
    transition: 0.3s;

}

.sidenav a:hover{
    color: #f1f1f1;
}

.sidenav .closebtn {
    position: absolute;
    top: 0;
    right: 25px;
    font-size: 36px;
    margin-left: 50px;
}

こちらのCSSコードでは、次のようなスタイルが設定されています。

  • .sidenav クラスは、サイドバーメニュー全体のスタイルを定義します。位置固定(position: fixed)され、画面の左端(left: 0)に配置され、背景色は黒色(background-color: #111)です。表示と非表示のアニメーションは0.5秒かけて行われます(transition: 0.5s)。padding-top により、コンテンツが上部から60px下にずれるように設定されています。
  • .sidenav a クラスは、サイドバーメニュー内のリンク(メニューアイテム)のスタイルを定義します。padding でアイテムの内部余白を設定し、font-size で文字サイズを設定しています。リンクがホバーされると、文字の色が変わります(colortransition)。
  • .sidenav .closebtn クラスは、サイドバーメニュー内で使用される閉じるボタン(”×”)のスタイルを設定します。position で絶対配置され、右上に配置されるように設定されています。

JavaScript

function openNav() {
    document.getElementById("mySidenav").style.width = "100%";
}

function closeNav() {
    document.getElementById("mySidenav").style.width = "0";
}

openNav() 関数は、サイドバーメニューを開く際に呼び出されます。

getElementById("mySidenav") は、mySidenav というIDを持つ要素を取得します。そして、その要素の style.width"100%" に設定することで、サイドバーメニューが表示されます。これにより、サイドバーメニューが画面の幅いっぱいに広がります。

closeNav() 関数は、サイドバーメニューを閉じる際に呼び出されます。

同じく getElementById("mySidenav") を使用して、要素を取得し、style.width"0" に設定することで、サイドバーメニューが非表示になります。幅がゼロになるため、画面上では見えなくなります。

コメント

タイトルとURLをコピーしました