1
0

More than 1 year has passed since last update.

【JavaScript】ハンバーガーメニューの作成

Posted at

1日1UI投稿

かなり時間が空きましたが、本日久しぶりに投稿します。

ハンバーガーメニュー

最初のころに作ったハンバーガーメニューとは違うハンバーガーメニューを作成しました。

以下完成品です。

See the Pen ハンバーガーメニュー2 by ri-tama (@ri-tama) on CodePen.

躓いたポイントを整理

CSS

.overlay{
    position: fixed; 
    top:0;
    right:0;
    bottom:0;
    left:0;
    width:100%;
    height:100%;
    background-color:rgba(255,255,255,.8);
    opacity: 0;
    pointer-events: none;
    transition:opacity .6s;
}

今回ハンバーガーメニューをクリックすると
画面全体が透明な白になり、そこにMenuが3つ並ぶというUIを作成しました。

画面全体へのフィルター設定の仕方を失念しておりました。
position:fixed;と上下左右の0で画面全体に配置することが可能です。

JavaScript

JSに関してはかなり単純なものだと思いますが、1点だけ。

open.addEventListener('click',()=>{
      open.classList.add("show");
      overlay.classList.add("show");
    });

openをクリックしたときに、openとoverlayにshowというクラスを加える
というのが上記のコードですが
この時加えるクラスの(show)は(.show)では動作しません。

DOMを取得するときは...と考えてみると

  const overlay=document.querySelector(".overlay");

上記コードについては

こちらで言及されている通り

Document の querySelector() メソッドは、指定されたセレクターまたはセレクター群に一致する、文書内の最初の Element を返します。一致するものが見つからない場合は null を返します。

とされているので、一致するという意味で.overlayを取得して動作できているのでしょう。

最初の問題に戻ります。
classlistに(show)を追加してね!
という単純な命令をしており、ここにCSSの書き方である.クラス名と書いても
HTMLの方に追加されない!ということなんですね。
追加してね!って言っているのは、(show)であって(.show)ではないのですから。

というわけで本日は別バージョンのハンバーガーメニューの作成でした。
またアウトプットができるよう勉強していきます。
またDockerの勉強を始めましたので、そちらもアウトプットしていきたいと思います。

読んでいただきありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0