質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

573閲覧

JavaScriptでのハンバーガーメニューについて

yudai1107

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2021/12/23 01:22

前提・実現したいこと

自分の模写したコードに対し、Javascriptでハンバーガーメニューを実装したい。

ここに質問の内容を詳しく書いてください。

発生している問題・エラーメッセージ

Javascriptを勉強し始めたばかりのものです。
スクールの課題でハンバーガメニューをJavaScriptで作ることになり、資料などを見ながら勉強しているのですがjQuelyなどの予備知識が一才ないまま勉強をしているので訳がわからなくなっています。

そこでもし可能ならばJavaScriptでのハンバーガメニューを作る際のヒントが欲しいと思い投稿させていただきました。

一応変数の指定はできていると思うのでそれ以降の流れをヒントとしていただければ嬉しいです。

試したこと

ネット上でハンバーガーメニューを作っているサイトはたくさん見たのですが、jQuelyで作っているものが多かったりコードの長さもまちまちで何から参考にしていいのか全く検討がつかないです。

$があるものはjQuelyの書き方なんだなと調べながらにわかっているつもりなのですが・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/12/23 01:38

現状のコードを提示していただけませんでしょうか?
yudai1107

2021/12/23 01:52

まだ全然理解ができていないのですがここまでは書けています。 <script> const nav = document.getElementById('navi'); const hamberger = document.getElementById('hamburger-js') const black = document.getElementById('bg-back') </script> naviがナビメニューの設定 hamburgerーjsがハンバーガーボタンの設定 bgーbackが背景の設定です。 全てIDタグで設定しています
nekora

2021/12/23 01:58

コメントでコードを提示しないで、質問は、編集・追記できますので、編集画面のコードブロックボタンを押して、その中に「コードの全文」を記載してください。一部抜粋ではHTMLの構造JavaScriptの全容が把握できないため答えるに答えられません。
yambejp

2021/12/23 02:02

どんな挙動にしたいかによります。 またHTML要素が調整できるならCSSだけでもハンバーガーメニューは実装可能です。
maisumakun

2021/12/23 02:03

> スクールの課題でハンバーガメニューをJavaScriptで作ることになり jQueryなども使わず、ということでしょうか?
yudai1107

2021/12/23 03:26

コード自体を載せることについては全文を載せてしまうと文字数の関係で投稿できなくなってしまうのですがどのようにしたら良いでしょうか。 使い方が慣れておらず申し訳ありません。
yudai1107

2021/12/23 03:34

スクールの課題はjQueryを使わずにということでした。 現在目標とする挙動は以下の通りです。 1ハンバーガーのアイコンを表示する(こちらは完成しています。) 2ハンバーガーボタンのクリックをした後のアイコンの変更(こちらはCSSで記入済みです) 【今詰まっているのはこの辺りです】 3ハンバーガーボタンをクリック→上からメニューをスライドさせる →こちらをJavaScriptでやることになっています。 変数の指定はできたのですが、ここから何をしていいか断片的な知識(toggleやaddEventListenerなど)なのであまり整理ができていないかもしれないです。 少し使っては見たのですが、何がどうなっているのかがわかっていないです。 4❌をクリックした後にメニューが上にスライドアウトしてメニューを表示する前に戻るという流れになっています。
guest

回答2

0

ベストアンサー

ベースだけ参考に上げておきます
あとはどういう挙動をしたいか検討ください

javascript

1<style> 2.hamburger:not(.active):after{ 3content:"\02261"; 4} 5.hamburger.active:after{ 6content:"\0d7"; 7} 8.hamburger:not(.active) ~ nav{ 9display:none; 10} 11nav{ 12border:1px solid black; 13width:-moz-fit-content; 14} 15nav ul{ 16list-style:none; 17margin:0; 18} 19nav>ul{ 20padding:0; 21} 22nav li:not(:hover) ul{ 23display:none; 24} 25</style> 26<script> 27document.addEventListener('click',e=>{ 28 const t=e.target; 29 if(t.closest('.hamburger')){ 30 t.classList.toggle('active'); 31 } 32 if(t.closest('nav a') || 33 !t.closest('nav,.hamburger')){ 34 document.querySelector('.hamburger').classList.remove('active'); 35 } 36}); 37</script> 38<label> 39<div class="hamburger"></div> 40<nav> 41 <ul> 42 <li><span>AAA</span> 43 <ul> 44 <li><a href="#">aaa</a></li> 45 <li><a href="#">bbb</a></li> 46 <li><a href="#">ccc</a></li> 47 </ul> 48 </li> 49 <li><span>BBB</span> 50 <ul> 51 <li><a href="#">ddd</a></li> 52 <li><span>XXX</span> 53 <ul> 54 <li><a href="#">xxx</a></li> 55 <li><a href="#">yyy</a></li> 56 <li><a href="#">zzz</a></li> 57 </ul> 58 </li> 59 <li><a href="#">fff</a></li> 60 </ul> 61 </li> 62 <li><a href="#">ggg</a></li> 63 </ul> 64</nav> 65</label>

投稿2021/12/23 03:47

yambejp

総合スコア114775

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yudai1107

2021/12/23 09:24

ありがとうございます。 少しやってみます。
guest

0

まずは実装したい内容を羅列してみましょう。

  1. 画面の左上(或いは右上)にハンバーガーアイコンを表示したい
  2. ハンバーガーアイコンをクリックした後、アイコンの変更
  3. ハンバーガーアイコンをクリックした後、画面の左(右からでも上からでもどっちでもいい)からメニューがスライドインして表示する

4. メニュー以外の場所、或いはバツ(❌)をクリックした後メニューが表示と逆方向にスライドアウト(フェイドアウトとか別のアニメーションでもOK)してメニューを表示する前に戻る。

課題を一つ一つ解決していきましょう。

投稿2021/12/23 02:22

skys215

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yudai1107

2021/12/23 09:22

スクールの課題はjQueryを使わずにということでした。 現在目標とする挙動は以下の通りです。 1ハンバーガーのアイコンを表示する(こちらは完成しています。) 2ハンバーガーボタンのクリックをした後のアイコンの変更(こちらはCSSで記入済みです) 【今詰まっているのはこの辺りです】 3ハンバーガーボタンをクリック→上からメニューをスライドさせる →こちらをJavaScriptでやることになっています。 変数の指定はできたのですが、ここから何をしていいか断片的な知識(toggleやaddEventListenerなど)なのであまり整理ができていないかもしれないです。 少し使っては見たのですが、何がどうなっているのかがわかっていないです。 4❌をクリックした後にメニューが上にスライドアウトしてメニューを表示する前に戻るという流れになっています。
skys215

2021/12/23 15:02

躓いてるのは2ならば、2について質問するのをお勧めします。 例えば「アイコンを入れ替わる方法がわからない」とか。 「ハンバーガーメニューを実装したい」はいい質問じゃないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問