前提・実現したいこと
問題のサイト
このサイトなんですが、デベロッパーツールでスマホの見た目をエミュレートしたときは、ハンバーガーメニューを開くと縦にスクロールできるのですが、iphoneで見るとハンバーガーメニュー自体が固定されてしまって、縦にスクロールできません。下の方が見切れてしまいます。縦にスクロールできるようにしたいです。できれば一番したにきたときにはバウンドするようにもしたいです。
該当のソースコード
上記リンクに該当のサイトがありますので、お手数ですが、デベロッパーツールでコード見て頂きたいのですが、一応該当する部分のコードを貼りつけておきます。
html
1<header class="sp"> 2 <img src="img/index/header_sp.png" class="main top-key-p" alt="" /> 3 <img class="top-schedule-sp" src="img/index/schedule_sp.png" alt="" /> 4 <a href="./#top"> 5 <img src="img/common/logo_sp.png" class="logo_sp" alt="" /> 6 </a> 7 <img src="img/common/open.png" class="nav_btn" alt="" /> 8 <nav class="gnav_sp sp"> 9 <ul> 10 <a href="./"><li><span class="nav_main">トップ</span><br /><span class="nav_sub">TOP</span></li></a> 11 <a href="about.html"><li><span class="nav_main">当院について</span><br /><span class="nav_sub">ABOUT</span></li></a> 12 <a href="case.html"><li><span class="nav_main">よくある症状</span><br /><span class="nav_sub">CASE</span></li></a> 13 <a href="./#schedule"><li><span class="nav_main">診療時間のご案内</span><br /><span class="nav_sub">SCHEDULE</span></li></a> 14 <a href="about.html#access"><li><span class="nav_main">アクセス</span><br /><span class="nav_sub">ACCESS</span></li></a> 15 </ul> 16 <a href="tel:0527767511"> 17 <img src="img/common/sp_tel.png" alt="tel" /> 18 </a> 19 <a href="https://majima.mdja.jp" target="_blank"><img src="img/common/sp_link.png" alt="web予約" /></a> 20 21 </nav> 22 </header>
css
1header .logo_sp { 2 position: fixed; 3 top: 0; 4 left: 0; 5 opacity: 0.95; 6 z-index: 10000; 7 8 } 9 header .nav_btn { 10 position: fixed; 11 top: 0; 12 right: 0; 13 z-index: 12000; 14 /* display: none; */ 15 width: 17vw; 16 } 17 header img.main { 18 padding-top:62px; 19 } 20 header img.main.top-key-p{ 21 padding-top:0; 22 } 23 .gnav_sp { 24 position: fixed; 25 /* top: 60px; */ 26 top: 17vw; 27 width: 100%; 28 background: linear-gradient(to bottom, #1156A9, #3DCAEA); 29 z-index: 9000; 30 display: none; 31 padding-bottom:130px; 32 /* height:100vh; */ 33 height: calc(100vh - 17vw); 34 overflow-y: scroll; 35 -webkit-overflow-scrolling: touch; 36 } 37 .gnav_sp img { 38 display: block; 39 width: 90%; 40 margin: 0 auto; 41 text-align: center; 42 padding: 10px 0 10px 0; 43 } 44 .gnav_sp a img { 45 /* padding-top: 50px; */ 46 padding-bottom: 10px; 47 } 48 .gnav_sp ul { 49 margin: 0; 50 padding: 0; 51 width: 100%; 52 53 } 54 .gnav_sp li { 55 list-style: none; 56 margin: 10px; 57 padding: 0; 58 text-align: left; 59 border-bottom: 1px solid #ffffff; 60 padding-bottom:10px; 61 } 62 .gnav_sp li:nth-of-type(1) { 63 margin-top: 0; 64 padding-top: 20px; 65 } 66 .nav_main { 67 color: #ffffff; 68 font-size: 115%; 69 } 70 .nav_sub { 71 color: #dddddd; 72 }
js
1<script type="text/javascript"> 2 $(function() { 3 4 5 $(window).on("load", function() { 6 var h = $(".logo_sp").height(); 7 $(".nav_btn").height(h); 8 $(".nav_btn").show(); 9 }); 10 11 $(".nav_btn").on("click", function(){ 12 $(".gnav_sp").slideToggle(); 13 $('html').toggleClass('scroll-prevent') // 追記 14 if($(".nav_btn").attr("src") == "img/common/open.png") { 15 $(".nav_btn").attr("src", "img/common/close.png"); 16 } else { 17 $(".nav_btn").attr("src", "img/common/open.png"); 18 } 19 }); 20 21 $(".gnav_sp a").on("click", function() { 22 $(".gnav_sp").hide(); 23 }); 24 }); 25 </script>
試したこと
cssでgnav_spをoverflow:auto;にしてみたり、height:100%;にしたりしてみました。しかしだめでした。
overflow-y:scroll;となっているのでスクロールするはずなのですが、固定されてしまいます。
補足情報(FW/ツールのバージョンなど)
どなたかわかる方いらっしゃいましたら、教えてください。よろしくお願いいたします。
追記します。
上記cssコード以外のところで、
css
1.scroll-prevent { 2 /*動き固定*/ 3 position: fixed; 4 /*奥行きを管理*/ 5 z-index: -1; 6 /*下2つで背景を元のサイズのまま表示することができる*/ 7 width: 100%; 8 height: 100%; 9 }
としています。ハンバーガーメニューのボタンをクリックするとhtmlタグにこのscroll-preventをjsでクラスがつくようになっています。ハンバーガーメニューを開いたときに背景のコンテンツ部分がスクロールされないようにするためです。
html要素全体がスクロールできなくなるので、ハンバーガーメニュー自体もスクロールできないのでしょうか。
だとしたら、背景をスクロールさせずにハンバーガーメニューだけスクロールできるようにするにはどうしたらよいでしょうか。
わかる方いらっしゃったらよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。