前提・実現したいこと
1、メニューを開いてから閉じた際に下にある要素が開いていたメニュー分上に動く
→下の要素が詰まるのではなく、上の要素が詰まるような動きが欲しい
2、選択した要素がメニューバーの中の一番下に並ぶが、2回目は元の位置に戻したい
例
1 クリック
↓
2
3
4
5 この状態で4をクリック
6
1
↓
4 再度4をクリックでメニューバー開く
↓
1
2
3 これが理想です
5
6
4
2
3
5
6 現状です
1
4
現状、選んだものが一番下にきますが、再度別のメニューを選ぶとその選んだものが一番下にきて最初に選んだメニューが下から2番目にきてします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>Q290782</title> 6 <link rel="stylesheet" href="styles.css"> 7 <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> 8 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> 9 10 11 <script> 12 $(function() { 13 $(".tabLabel").on("click", function() { 14 const bottomItem = $(".bottom-item .tabLabel").get(0); 15 if (this !== bottomItem) { 16 $(".bottom-item").append(this); 17 $(".slider").append(bottomItem); 18 } 19 $(".slider").toggle('slide', { direction: 'down' }); 20 }); 21 }); 22 </script> 23 24</head> 25<body> 26 27<div class="block">こっち側から詰めて欲しい</div> 28 29<div class="sliderWrapper"> 30 <ul class="keywordTab slider"> 31 <li class="tabLabel">ジャンル5</li> 32 <li class="tabLabel">ジャンル4</li> 33 <li class="tabLabel">ジャンル3</li> 34 <li class="tabLabel">ジャンル2</li> 35 <li class="tabLabel">ジャンル1</li> 36 </ul> 37</div> 38<ul class="keywordTab bottom-item"> 39 <li class="tabLabel">全てのジャンル</li> 40</ul> 41 42<div class="block">こっち側が上に詰めてしまう</div> 43 44</body> 45</html>
css
1 2.block{ 3 width: 300px; 4 height: 100px; 5 background-color: #000; 6 margin: 0 auto; 7 color:white; 8} 9 10.keywordTab { 11 display: flex; 12 flex-direction: column; 13 justify-content: space-around; 14 align-items: center; 15 margin: 0 auto; 16 list-style: none; 17} 18 19.tabLabel { 20 display: flex; 21 opacity: 0.6; 22 width: calc(300 * (100vw / 375)); 23 height: 50px; 24 font-size: 1.5rem; 25 justify-content: center; 26 align-items: center; 27 cursor: pointer; 28 border-bottom: 0.1rem solid #967F4F; 29 color: #000; 30} 31
実装のサンプル
https://codepen.io/jun94516/pen/vYGjBvo
試したこと
.sliderWrapper
にメニューバー分のheightを持たせればずれること自体起きなくなるが一つで表示されているときに余白が気になる。
そもそも①の問題は解決できるのか、
②に関しては私のjsの知識不足です。。
どうかよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
プルダウンメニュー部分にjquery uiを使用
回答1件
あなたの回答
tips
プレビュー