解決したいこと
お世話になります。
メニューアイコンの位置が :hover 時に上にずれてしまう問題を解決したいです。
1枚目の画像が通常の状態、2枚目が :hover が適応された状態です。
ご助力のほど、なにとぞよろしくお願いいたします。
該当のソースコード
ejs(html)
1<div class="table-head"> 2 <span class="title-column">Name</span> 3 <span class="modified-column">Last Modified</span> 4</div> 5<ul class="table-body"> 6 <% memos.forEach((memo) => { %> 7 <li> 8 <span class="title-column"><%= memo.title %></span> 9 <div class="items"> 10 <span class="modified-column"><%= memo.modified %></span> 11 <div class="icon-area"> 12 <div class="menu-icon"> 13 <div></div> 14 <div></div> 15 <div></div> 16 </div> 17 <ul class="menu-content"> 18 <li><a href="/edit/<%= memo.id %>">Edit</a></li> 19 <li><form action="/remove/<%= memo.id %>" method="post"> 20 <input type="submit" value="Remove"> 21 </form></li> 22 </ul> 23 </div> 24 </div> 25 </li> 26 <% }); %> 27</ul>
css
1/* table */ 2.table-head { 3 display: flex; 4 background-color: #fff; 5 border-radius: 2px 2px 0 0; 6 padding: 0 30px; 7 height: 4.5em; 8 font-size: 1em; 9 color: #6b1d1e; 10 border: 1px solid #ffeeee; 11 border-bottom: 1px solid #f9dee0; 12} 13 14.title-column { 15 width: 70%; 16 text-align: left; 17 padding: 0; 18 margin: auto; 19 20} 21 22.modified-column { 23 width: 30%; 24 margin: auto; 25} 26 27.table-body { 28 background-color: #ffffff; 29 padding: 0 30px; 30 border-radius: 0 0 2px 2px; 31 border: 1px solid #ffeeee; 32 border-top: none; 33 34} 35 36.table-body li { 37 height: 4.5em; 38 border-top: 1px solid #F9F0F2; 39 display: flex; 40} 41 42.table-body li:first-child { 43 border: none; 44} 45 46.table-body .title-column { 47 font-size: 1em; 48 color: #A6858E; 49} 50 51.items { 52 width: 30%; 53 display: flex; 54} 55 56.items .modified-column { 57 width: 80%; 58 font-size: 0.75em; 59 letter-spacing: 0; 60 color: #D4BAC0; 61} 62 63.icon-area { 64 position: relative; 65 width: 20%; 66 padding: 12px 10px; 67 margin: auto; 68 height: 1em; /* Lhankor_Mhy様に頂いた回答を受けて追加しました */ 69} 70 71.menu-icon div { 72 width: 3px; 73 height: 3px; 74 background-color: #D4BAC0; 75 margin: 3px auto; 76 border-radius: 100px; 77} 78 79.icon-area:hover .menu-icon div { 80 background-color: #A6858E; 81 transition: all 0.3s ease; 82} 83 84.menu-content { 85 z-index: 9; 86 display: none; 87 margin: 0; 88 padding: 0; 89 position: sticky; 90} 91 92.icon-area:hover .menu-content { 93 display: block; 94 width: 120px; 95 transform: translateX(calc(-50% + 6px)); 96 margin-top: 12px; 97 overflow: hidden; 98 background-color: #fff; 99 border: 1px solid #f9dee0; 100} 101 102.memu-content li { 103 display: flex; 104 flex-direction: column; 105 border-top: 1px solid #f9dee0; 106} 107 108.menu-content li:first-child { 109 border: none; 110} 111 112.menu-content form, .menu-content a { 113 text-align: center; 114 margin: auto; 115 width: 100%; 116} 117 118.menu-content input { 119 margin: 0 auto; 120 border: none; 121 outline: none; 122 cursor: pointer; 123 -webkit-appearance: none; 124 -moz-appearance: none; 125 appearance: none; 126 padding: 0; 127 font-size: 0.75em; 128 letter-spacing: 0; 129 color: #D4BAC0; 130 background-color: transparent; 131} 132 133.menu-content a { 134 font-size: 0.75em; 135 letter-spacing: 0; 136 color: #D4BAC0; 137} 138 139.menu-content input:hover, .menu-content a:hover { 140 color: #FF8080; 141} 142 143.footer { 144 z-index: 8; 145 width: 100%; 146 height: 60px; 147 top: 100vh; 148 position: sticky; 149}
試したこと
.menu-content に position: sticky; を指定しているのが原因かと思い、 .icon-area にも position プロパティをいくつか試してみたのですが(relative, absolte, fixed, sticky)、どうやら関係なかったようです。
補足情報(FW/ツールのバージョンなど)
下の画像は、頂いた情報を元に height プロパティを追加した後のテーブルの全体像です。
作業環境は Windows11 、使用ブラウザは Chrome です。
その他、もしご入用の情報があれば仰ってくださいませ。

回答1件
あなたの回答
tips
プレビュー