
JavaScriptのロゴ アイコン by Icons8

1)ソース
・HTML
・CSS
2)解説
・inset: 0; とwidth(or height):100vw(or vh)の違い
コード
以下はHTMLです
以下はJavascriptです。
以下はCSSです
解説
1)要素の表示・非表示を切り替える

上記の中で要素2だけを非表示する場合、以下の方法があります。
■ 表示もスペースも削除する

display: none;
要素を見えなくするだけでなく、そのスペースも削除する
■ 表示は消してもスペースは残す

opacity: 0;
要素を見えなくする(スペースは残す/クリック可)
visibility: hidden;
要素を見えなくする(スペースは残す/クリック不可)
1つ目は、表示上もスペース上も「消す」というパターン。この場合は[display: none;]が該当します。
2つ目は、表示は消してもスペースは残すというパターン。ただしa要素の場合、表示を消してもリンク機能は存在したままなので、ユーザーは何もないところをクリックしたのに、どこか別の場所に飛ばされてしまうという現象が起きます。このようなケースでは、[opacity: 0;]と[visibility: hidden;]のセット使いが定番です。
【補足】
visibilityだけでも良さそうですが、visibilityにはアニメーションやトランジションが効かないため、opacityとのセットで使うことで、アニメーションやトランジションを効かせながら表示→非表示を切り替えられます。
2)width: 100%;とwidth: 100vwの違い

[width: 100%;]は親要素の幅いっぱいに広げるという意味。

[width: 100vw]はモニターの幅いっぱいに広げるという意味です。
これはheightにおいても同様です。
3)inset: 0; とwidth(またはheight):100vw(またはvh)の違い

今回のように、ドロワーメニューをコンテンツの前面に表示させ(position: fixed;)、かつ画面いっぱいに表示する場合は[inset: 0;]がベストプラクティスです。
【補足】[inset: 0;]とは、[top: 0; left: 0; right: 0; bottom: 0;]をショートハンドで記述したものです。

[100vw]または[100vh]とした場合、特にスマホだと、OSや機種によってノッチやインジケーター(モニター上部または下部に表示されるバー領域)の影響を受け、表示領域が画面いっぱいに広がらないことがあります。
4)Javascript「for文」
ハンバーガーメニューのボタンをクリックして、ドロワーメニューを表示・非表示を切り替えるだけでしたら、実行内容は1つで済みました。
では、ドロワーメニュー内のリンクをクリックした後の処理はどうでしょうか。
リンクをクリックすると同時に、リンク先へ移動しながら、ドロワーメニューを再び非表示にし、×マークになっていたハンバーガーボタンを再び三本線に戻さないといけません。

今回のケースではリンク数が4つありますので、リンク1の処理、リンク2の処理、リンク3の処理、リンク4の処理を個別に記述しなければいけません(処理内容は同じ)。
for文は、このように繰り返し処理を記述する時に用います。
for文の書き方


初期値
変数(let i)に初期値(0)を入れます(慣習的に、for文の変数名は「i」とします)。
for文だけで記述する場合は、初期値は「0」ではなく「1」としても構いません。
ただし配列と併用する場合は、(処理の目的によっては)初期値は「0」となることがあります。
繰り返し回数
a要素が4つあるので、繰り返し回数が「i < 4(4未満)」となります。
繰り返しになりますが、初期値を「0」とした場合は、4つあるa要素は、0、1、2、3とカウントされるため、「i < 4」とすることで、すべてのa要素が対象となります。
今回は、querySelectorAllで取得したa要素を自動カウントさせるために[length(数をカウントするプロパティ)]用いています。「4」と記述すると、将来的にリンクが増えた時に書き換える必要がありますが、「length」で代用すると、リンクの増減に柔軟に対応できます。
【注意】
比較演算子の記述によっては、条件式の解釈が「無限(永久に上限に達しない)」となる場合があります。そうなると、パソコンは同じ処理を延々と続け、クラッシュしてしまう危険性があります。
増減
[i++]は「変数iを1ずつ増やす」という意味です。
ほかには[i += 1]と記述しても、ほぼ同じ意味になります。