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

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

メニュー

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

JavaScript

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

0回答

1085閲覧

ドロワーメニューの3階層目がスクロールできない(drawer.js・bootstrap.js)

pandamo

総合スコア1

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

メニュー

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

JavaScript

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2021/11/22 00:20

編集2021/12/16 01:49

前提・実現したいこと

ドロワーメニューの高さが画面サイズ以上になった時にスクロールが出来るようにしたい

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

・drawer.js等を使って、ドロワーメニューを作成したのですが、
3階層目を開いた時、画面サイズを超えると下にスクロールが出来ず、メニューを下まで見ることができない
※コード上だとSubmenu1-1~Submenu1-3が開かれた状態の時

12/16更新
メニューを開くたびにiscrollをrefrehすることで、開いた分だけのメニューをすべてスクロール出来るようにはなったのですが、
メニューを下にスクロールして先頭(コードだとMenu1)の部分が見えない状態で他のメニューを開くと、
画面が先頭に戻ってしまうのを止めたいです。

該当のソースコード

HTML

1<head> 2<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 3<script type="text/javascript" charset="utf-8" src="javascripts/drawer.min.js"></script> 4<script type="text/javascript" charset="utf-8" src="javascripts/iscroll.js"></script> 5<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> 6<script type="text/javascript"> 7 $(document).ready(function(){ 8 $('.drawer').drawer(); 9 }); 10 $('.drawer-dropdown a.submenu').on("click", function(e){ 11 $(this).next('ul').toggle(500); 12 e.stopPropagation(); 13 e.preventDefault(); 14 $(this).toggleClass('clicked'); 15 setTimeout(function(){ 16 var myScroll; 17 myScroll = new IScroll('#drawer-scroll',{ 18 mouseWheel: true 19 }); 20 myScroll.refresh(); 21 } , 500); 22 }); 23</script> 24</head> 25<body> 26<div class="drawer drawer--top drawer--navbarTopGutter"> 27 <header class="drawer-navbar drawer-navbar--fixed" role="banner"> 28 <div class="drawer-container"> 29 <div class="drawer-navbar-header"> 30 <a class="drawer-brand" href="index_drawer.html"><div class="img_logo"><img src="#" width="100" height="60" alt="###" /></div></a> 31 <button type="button" class="drawer-toggle drawer-hamburger"> 32 <span class="sr-only">toggle navigation</span> 33 <span class="drawer-hamburger-icon"></span> 34 </button> 35 </div> 36 <nav class="drawer-nav" role="navigation"> 37 <ul class="drawer-menu"> 38 <li class="drawer-dropdown"> 39 <a class="drawer-menu-item submenu" href="###" data-toggle="dropdown">Menu1<span class="drawer-caret"></span></a> 40 <ul class="drawer-dropdown-menu"> 41 <li><a class="drawer-dropdown-menu-item" href="#">Submenu1</a></li> 42 <li><a class="drawer-dropdown-menu-item" href="#">Submenu2</a></li> 43 <li><a class="drawer-dropdown-menu-item" href="#">Submenu3</a></li> 44 </ul> 45 </li> 46 <li class="drawer-dropdown"> 47 <a class="drawer-menu-item" href="#" data-toggle="dropdown">Menu2<span class="drawer-caret"></span></a> 48 <ul class="drawer-dropdown-menu"> 49 <li class="drawer-dropdown"> 50 <a class="drawer-menu-item submenu" href="#" data-toggle="dropdown">Submenu1<span class="drawer-caret"></span></a> 51 <ul class="drawer-dropdown-menu"> 52 <li><a class="drawer-dropdown-menu-item" href="#">Submenu1-1</a></li> 53 <li><a class="drawer-dropdown-menu-item" href="#">Submenu1-2</a></li> 54 <li><a class="drawer-dropdown-menu-item" href="#">Submenu1-3</a></li> 55 </ul> 56 </li> 57 <li><a class="drawer-dropdown-menu-item" href="#">Submenu2</a></li> 58 <li><a class="drawer-dropdown-menu-item" href="#">Submenu3</a></li> 59 </ul> 60 </li> 61 <li><a class="drawer-menu-item" href="#">Menu3</a></li> 62 <li><a class="drawer-menu-item" href="#">TOPへ</a></li> 63 </ul> 64 </nav> 65 </div> 66 </header> 67 <main role="main"> 68 <!-- Page content --> 69 </main> 70</div> 71</body>

css

1/* drawer.min.cssに追加 */ 2/* 980px以上では表示しない */ 3@media screen and (min-width:981px){ 4 .drawer{ 5 display: none; 6 } 7} 8/* 子階層の三角ボタン */ 9.drawer-menu-item .subcaret{ 10 display: inline-block; 11 width: 0; 12 height: 0; 13 margin-left: 20px; 14 transition: transform .2s ease,opacity .2s ease,-webkit-transform .2s ease; 15 transform: rotate(0deg); 16 vertical-align: middle; 17 border-top: 5px solid; 18 border-right: 5px solid transparent; 19 border-left: 5px solid transparent; 20} 21/* クリックされた階層のみ回転 */ 22.clicked .subcaret{ 23 transform: rotate(180deg); 24} 25.drawer-menu,.drawer-dropdown-menu{ 26 height: 100%; 27 overflow: auto; 28 -webkit-overflow-scrolling: touch; 29}

試したこと

・navに「overflow: auto;」を追加→動かない
・cssコード内最後の通り.drawer-menu,.drawer-dropdown-menuに「overflow: auto;」を追加→動かない
・navの次のul(.drawer-menu)に「style="transition-timing-function: cubic-bezier(0.1, 0.57, 0.1, 1); transition-duration: 0ms; transform: translate(0px, 0px) translateZ(0px);"」
がDevツールで表示されたので、ツール上で削除→JS等のコードからなのか、メニュー開くと復活

iscroll.jsを使用しており「refresh」をかけたら、スクロール出来る範囲はメニューを開いた分までは見れるようになりました。

補足情報(FW/ツールのバージョンなど)

iPhoneやChromeのDevツールで動作しませんでした

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問