実現したいこと
お世話になります。
ただいま制作中メモのWEBアプリの中でドロップダウンメニューを実装してみたのですが、そのレイアウトについていくつか行き詰まってしまいました。
どうか、皆様のお知恵をお貸しいただけたらと思います。
-
メモ一覧のページにて、メニューアイコンをクリックしたらその子要素であるドロップダウンが表示される仕組みなのですが、どこのメニューアイコンをクリックしても一番上のメニューアイコンの下に表示されてしまいます。クリックしたメニューアイコンの下に表示するにはどうすればよいですか?
-
ドロップダウンの位置をメニューアイコンの真下に表示したいです。今の状態ではかなり右に寄ってしまっているので……。
-
ドロップダウンのレイアウトを、親要素である .table-body から独立させたいです。例えば .table-body 内の li 要素に height: 72px; を指定しているのですが、それがドロップダウンにも反映されており、.menu-content 内の li 要素に新しく height を指定しても反映されませんでした。
うまく説明できず恐縮ですが、以下の画像をご参照くださいませ。
また、HTML(EJS) における該当のテーブル部分は以下の通りです。
HTML(EJS)
1<div class="index-table-wrapper"> 2 <div class="table-head"> 3 <span class="title-column">Name</span> 4 <span class="modified-column">Last Modified</span> 5 </div> 6 <ul class="table-body"> 7 <% memos.forEach((memo) => { %> 8 <li> 9 <span class="title-column"><%= memo.title %></span> 10 <div class="items"> 11 <span class="modified-column"><%= memo.modified %></span> 12 <div class="icon-area"> 13 <input type="checkbox" id="menu-input"/> 14 <label class="menu-icon" for="menu-input"> 15 <div></div> 16 <div></div> 17 <div></div> 18 </label> 19 <ul class="menu-content"> 20 <li><a href="/edit/<%= memo.id %>">Edit</a></li> 21 <li><form action="/delete/<%= memo.id %>" method="post"> 22 <input type="submit" value="Dlete"> 23 </form></li> 24 </ul> 25 </div> 26 </div> 27 </li> 28 <% }); %> 29 </ul> 30 <div class="footer"></div> 31</div>
CSSに関してはかなり長くなってしまうため、メニューアイコンとドロップアウトの周辺のみ記載します。もし他の部分が必要でしたら、お手数ですがコメントを頂けますと幸いです。
CSS
1.icon-area { 2 width: 20%; 3 margin: auto; 4 padding-right: 10px; 5} 6 7 8.menu-icon div { 9 width: 3px; 10 height: 3px; 11 background-color: #D4BAC0; 12 justify-content: center; 13 margin: 3px auto; 14 border-radius: 100px; 15} 16 17.icon-area:hover .menu-icon div { 18 background-color: #A6858E; 19 transition: all 0.3s ease; 20} 21 22.menu-content { 23 display: none; 24 margin: 0; 25 padding: 0; 26 position: absolute; 27} 28 29#menu-input:checked ~ .menu-content { 30 display: block; 31 width: 120px; 32 margin-top: 12px; 33 z-index: 1; 34 overflow: hidden; 35 position: absolute; 36 background-color: #fff; 37 border: 1px solid #f9dee0; 38} 39 40#menu-input { 41 display: none; 42} 43 44.memu-content li { 45 display: flex; 46 flex-direction: column; 47 border-top: 1px solid #f9dee0; 48} 49 50.menu-content li:first-child { 51 border: none; 52} 53 54.menu-content form, .menu-content a { 55 text-align: center; 56 width: 100%; 57} 58 59.menu-content input { 60 margin: 0 auto; 61 border: none; 62 outline: none; 63 cursor: pointer; 64 -webkit-appearance: none; 65 -moz-appearance: none; 66 appearance: none; 67 padding: 0; 68 font-size: 12px; 69 letter-spacing: 0; 70 color: #D4BAC0; 71 background-color: transparent; 72} 73 74.menu-content a { 75 font-size: 12px; 76 letter-spacing: 0; 77 color: #D4BAC0; 78} 79 80.menu-content input:hover, .menu-content a:hover { 81 color: #FF8080; 82} 83
試したこと
2つめの質問に関しては、以下のサイトを参考に left: 50%; transform: translateX(-50%); を追加してみましたが、以下の画像のようになってしまいました。
また、1つめと3つめについてもそれぞれ "ドロップダウン 位置 可変" や "子要素 height 効かない" などいくつかの言葉で調べてみたのですが、それらしい対処法が書かれたサイトを見つけることが出来ませんでした。
補足情報(FW/ツールのバージョンなど)
HTML のコードは EJS ファイルで書いているため EJS タグを使用しましたが、今回の質問とは特に関係がないかと思われます。
以上、ご教示のほど何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/26 09:40 編集
2023/05/26 10:14
2023/05/27 06:59 編集
2023/05/27 07:57
2023/05/28 13:56