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

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

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

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1360閲覧

ハンバーガーメニューを閉じたときに、上に戻らなくするようにしたい。

Kinomaru

総合スコア6

メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/05/13 22:06

前提・実現したいこと

ハンバーガーメニューを閉めた時に、スクロールした所と同じ場所で閉じれるようにしたいのですが、どうやっても一番上に戻ってしまうので、何かアドバイスいただけたら嬉しいです。

該当のソースコード

html

1<header> 2 <div id="headerTop"> 3 4 <div id="headerTopContent"> 5 <h2 id="logo">Shiro</h2> 6 7 <a href="#" id="menuButton"> 8 <div class="bar"></div> 9 <div class="bar"></div> 10 <div class="bar"></div> 11 </a> 12 13 <nav id="nav"> 14 <ul> 15 <li><a href="#">menu1</a></li> 16 <li><a href="#">menu2</a></li> 17 <li><a href="#">menu3</a></li> 18 <li><a href="#">menu4</a></li> 19 <li><a href="#">menu5</a></li> 20 </ul> 21 </nav> 22 </div> 23 </div> 24 <h1>ロゴ</h1> 25 <p>キャプション</p> 26 </header>

css

1#headerTop { 2 width: 100%; 3 height: 65px; 4 position: absolute; 5 top: 40px; 6 left: 0; 7} 8#headerTop.pst-change{ 9 position: fixed; 10 top: 0; 11} 12#headerTopContent { 13 width: 70%; 14 height: 100%; 15 margin: auto; 16 display: flex; 17 justify-content: space-between; 18 align-items: center; 19 position: relative; 20} 21#menuButton { 22 display: inline-block; 23 height: 35px; 24 width: 35px; 25 position: relative; 26 z-index: 2; 27} 28 29.bar { 30 height: 1px; 31 width: 60%; 32 background-color: white; 33 position:absolute; 34 top: 50%; 35 left: 50%; 36 transform: translate(-50%, -50%); 37 transition: 0.3s; 38} 39.bar:nth-of-type(1){ 40 transform: translate(-50%, -5px); 41} 42.bar:nth-of-type(3){ 43 transform: translate(-50%, 5px); 44} 45 46#menuButton.active div:nth-of-type(1){ 47 transform: rotate(45deg) translate(-36%, 14px); 48} 49#menuButton.active div:nth-of-type(2){ 50 opacity: 0; 51} 52#menuButton.active div:nth-of-type(3){ 53 transform: rotate(-45deg) translate(-69%, -8px); 54} 55 56#nav { 57 height: 1400px; 58 opacity: 0; 59 visibility: hidden; 60 transition: 0.3s; 61 position: absolute; 62 z-index: 100; 63 top: 26px; 64 right: -200px; 65 bottom: 0; 66 left: -200px; 67 background-color: rgba(255, 255, 255, .9); 68 text-align: center; 69 margin-top: 40px; 70} 71#nav a { 72 color: black; 73} 74#nav li{ 75 border-bottom: 1px solid #CCCCCC; 76 font-size: 18px; 77 color: #2B2B2B; 78 padding: 80px 0; 79 z-index: 20; 80} 81 82#nav.active { 83 opacity: 1; 84 visibility: visible; 85} 86#headerTop.scroll-nav { 87 background-color: white; 88 border-bottom: 1px solid grey; 89} 90#logo.scroll-nav { 91 color: black; 92 background: white; 93} 94.bar.show { 95 background-color: black; 96}

JavaScript

1'use strict'; 2{ 3 const btn = document.getElementById("menuButton"); 4 const nav = document.getElementById("nav"); 5 6 btn.addEventListener("click", () => { 7 btn.classList.toggle("active"); 8 nav.classList.toggle("active"); 9 }); 10 11 document.addEventListener("scroll", () => { 12 13 const scrollY = window.scrollY; 14 const menu = document.getElementById("headerTop"); 15 const logo = document.getElementById("logo"); 16 const btn = document.getElementById("menuButton"); 17 const headerTop = document.getElementById("headerTop"); 18 19 menu.classList.toggle("scroll-nav", scrollY > 350); 20 logo.classList.toggle("scroll-nav", scrollY > 350); 21 btn.classList.toggle("scroll-nav", scrollY > 350); 22 showBar(); 23 headerTop.classList.toggle("pst-change", scrollY > 40); 24 }); 25 26 function showBar() { 27 const bar = document.querySelectorAll(".bar"); 28 bar.forEach(function (bars) { 29 if(scrollY > 350){ 30 bars.classList.add("show"); 31 }else{ 32 bars.classList.remove("show"); 33 } 34 }); 35 } 36} 37

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

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

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

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

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

guest

回答1

0

ベストアンサー

画面遷移させないならhref属性自体取っ払うか、Event.preventDefault()を入れるかでも対応可能です。

取っ払う

html

1<a id="a">aaaaaaaaaaaaaaa</a>

preventDefault()

html

1<a href="#" id="a">aaaaaaaaaaaaaaa</a> 2<script> 3a.addEventListener("click", function(e){ 4 e.preventDefault(); 5}); 6</script>

私はhref属性取っ払います。

投稿2021/05/13 22:29

編集2021/05/13 22:34
m.ts10806

総合スコア80850

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

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

Kinomaru

2021/05/14 08:23

アドバイスありがとうございます! href属性を消したら、きちんと動作するようになりました‼︎
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問