動きのあるページを作っていまして、
html
1 <ul class="gnav"> 2 <li> 3 <a>動物</a> 4 <ul> 5 <li><a>いぬ</a></li> 6 <li><a>ねこ</a></li> 7 <li><a>さる</a></li> 8 <li><a>全部</a></li> 9 10 </ul> 11 </li> 12 </ul>
hoverすると多階層のメニューが出るようにしています。
css
1.gnav { 2 display: flex; 3 height: 2rem; 4 margin: 0 auto; 5 width: 1000px; 6 position: absolute; 7 z-index: 10; 8} 9.gnav > li { 10 width: 25%; 11} 12.gnav li { 13 list-style: none; 14 position: relative; 15} 16.gnav li a { 17 background: #7ab6ee; 18 border-right: 1px solid #eee; 19 color: rgb(7, 6, 6); 20 display: block; 21 height: 2rem; 22 line-height: 2rem; 23 text-align: center; 24 text-decoration: none; 25 width: 100%; 26} 27.gnav li li { 28 height: 0; 29 overflow: hidden; 30 transition: .5s; 31} 32.gnav li li a { 33 border-top: 1px solid #eee; 34} 35.gnav li:hover > ul > li { 36 height: 2rem; 37 overflow: visible; 38}
マウス操作では問題ないのですが、時に想定されるタッチ操作の場合、メニューが広がり、例えば「いぬ」を選択してもメニューが開きっぱなしになります。マウス操作であればカーソル移動でhoverが取れるのですが、タッチだとその点が不可能です。
javascript
1$('.gnav li ul li').click(function(){ 2 let data = $(this).text(); 3 $('#AAA').text(data + "が選択されました"); 4 $('.gnav li').css("overflow","hidden"); 5 $('.gnav').css("overflow","visible"); 6});
一度オーバーフロー設定を隠せば?!と思いましたが、今度は二度と現れなくなったり、javascriptで試行錯誤していますが答えが見つかりません。
どなたかアドバイスいただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/20 02:38