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

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

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

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

HTML

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

CSS

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

Q&A

解決済

1回答

9260閲覧

ハンバーガーメニューを開いた際、背景を固定したい

mariueda

総合スコア8

JavaScript

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/05/11 06:47

編集2020/05/12 15:35

ハンバーガーメニューを開いた際にスマホメニューの背景をスクロールさせないようにしました。
JavaScriptを動かすとハンバーガーメニューを押下後にスクロールされないようになりますが、
閉じるとスクロールできなくなります。
JavaScript内の「overflow」の書き方に問題があるのでしょうか?

html

1 <!-- hamburger_menu_sp --> 2 <div class="header"> 3 <nav class="global-nav"> 4 <ul class="global-nav__list"> 5 <li class="global-nav__item"> 6 <a href=""><img src="img/sample_menu.png" alt="sample_menu"></a> 7 </li> 8 <li class="global-nav__item"><a href="#cd_1">sample1</a></li> 9 <li class="global-nav__item"><a href="#cd_2">sample2</a></li> 10 <li class="global-nav__item"><a href="#cd_3">sample3</a></li> 11 <li class="global-nav__item"><a href="#cd_4">sample4</a></li> 12 <li class="global-nav__item"><a href="#cd_5">sample5</a></li> 13 <li class="global-nav__item"><a href="#cd_6">sample6</a></li> 14 </ul> 15 </nav> 16 <div class="hamburger" id="js-hamburger"> 17 <span class="hamburger__line hamburger__line--1"></span> 18 <span class="hamburger__line hamburger__line--2"></span> 19 <span class="hamburger__line hamburger__line--3"></span> 20 </div> 21 <div class="black-bg" id="js-black-bg"></div> 22 </div>

css

1 .header { 2 display: block; 3 left: 0; 4 top: 0; 5 width: 100%; 6 } 7 .global-nav { 8 position: fixed; 9 right: -320px; 10 top: 0; 11 width: 200px; 12 height: 100vh; 13 padding-top: 50px; 14 background-color: #fff; 15 transition: all .6s; 16 z-index: 200; 17 overflow-y: auto; 18 } 19 .hamburger { 20 position: absolute; 21 left: 0; 22 top: 0; 23 width: 40px; 24 height: 40px; 25 cursor: pointer; 26 z-index: 300; 27 } 28 .global-nav__list { 29 margin: 0; 30 padding: 0; 31 list-style: none; 32 } 33 .global-nav__item { 34 text-align: center; 35 padding: 0 14px; 36 } 37 .global-nav__item a { 38 display: block; 39 padding: 18px 0; 40 text-decoration: none; 41 color: #111; 42 } 43 .global-nav__item img { 44 width: 75%; 45 } 46 .hamburger__line { 47 position: absolute; 48 left: 11px; 49 width: 38px; 50 height: 3px; 51 background-color: #ffffff; 52 transition: all .6s; 53 } 54 .hamburger__line--1 { 55 top: 15px; 56 } 57 .hamburger__line--2 { 58 top: 25px; 59 } 60 .hamburger__line--3 { 61 top: 35px; 62 } 63 /* メニュー開くと背景を暗くする */ 64 .black-bg { 65 position: fixed; 66 left: 0; 67 top: 0; 68 width: 100vw; 69 height: 100vh; 70 z-index: 100; 71 background-color: #000; 72 opacity: 0; 73 visibility: hidden; 74 transition: all .6s; 75 cursor: pointer; 76 } 77 .nav-open .global-nav { 78 left: 0; 79 } 80 .nav-open .black-bg { 81 opacity: .8; 82 visibility: visible; 83 } 84 .nav-open .hamburger__line--1 { 85 transform: rotate(45deg); 86 top: 20px; 87 background: #1D2D61; 88 } 89 .nav-open .hamburger__line--2 { 90 width: 0; 91 left: 50%; 92 } 93 .nav-open .hamburger__line--3 { 94 transform: rotate(-45deg); 95 top: 20px; 96 background: #1D2D61; 97 }

JS

1// スマホメニューの背景をスクロールさせない 2$(function() { 3 $('.hamburger').click(function() { 4 if ($('.hamburger').prop('checked') == false) { 5 $('body').css('overflow', 'auto'); 6 } else { 7 $('body').css('overflow', 'hidden'); 8 } 9 }); 10});

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

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

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

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

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

guest

回答1

0

自己解決

// スマホメニューの背景をスクロールさせない
$(function() {
$('.hamburger').click(function() {
if ($('.hamburger').prop('checked') == false) {
$('body').css('overflow', 'hidden');
// $('body').css('overflow', 'auto');
} else {
$('body').css('overflow', 'auto');
// $('body').css('overflow', 'hidden');
}
});
});

投稿2020/05/11 07:19

mariueda

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問