前提・実現したいこと
HTML+CSSでdetails summaryでメニューを作り、横並びに配備しました
しかし、そこで一つ問題が発生しました
details summaryで作られたものは、そのwidthの幅内でしか、マウスイベントが有効にはならない点です
サンプルソースでご確認いただければわかるのですが、
menu1と書かれてる部分をマウス通過しないで、
menu2を通過した場合に、hoverが発生しません
何かいい方法はありませんでしょうか?
該当のソースコード
HTML
1<style> 2body,html { 3 height:100%; 4} 5.hover_color { 6 transition: all 0.3s ease; 7} 8.hover_color:hover { 9 background-color: hotpink; 10} 11summary { 12 position: relative; 13 display: block; /* 矢印を消す */ 14 padding: 10px 10px 10px 30px; /* アイコンの余白を開ける */ 15 cursor: pointer; /* カーソルをポインターに */ 16 font-weight: bold; 17 background-color: gray; 18 transition: 0.2s; 19} 20summary:hover { 21 background-color: darkgray; 22} 23summary::-webkit-details-marker { 24 display: none; /* 矢印を消す */ 25} 26 27/* 疑似要素でアイコンを表示 */ 28summary:before, 29summary:after { 30 content: ""; 31 margin: auto 0 auto 10px; 32 position: absolute; 33 top: 0; 34 bottom: 0; 35 left: 0; 36} 37summary:before { 38 width: 16px; 39 height: 16px; 40 background-color: gray; 41} 42summary:after { 43 left: 6px; 44 width: 5px; 45 height: 5px; 46 border: 4px solid transparent; 47 border-left: 5px solid white; 48 box-sizing: border-box; 49 transition: .1s; 50} 51 52/* オープン時のスタイル */ 53details[open] summary { 54 background-color: silver; 55} 56details[open] summary:after { 57 transform: rotate(90deg); /* アイコンを回転 */ 58 left: 4px; /* 位置を調整 */ 59 top: 5px; /* 位置を調整 */ 60} 61 62/* アニメーション */ 63details[open] .details-content { 64 animation: fadeIn 0.5s ease; 65} 66@keyframes fadeIn { 67 0% { 68 opacity: 0; 69 transform: translateY(-10px); 70 } 71 100% { 72 opacity: 1; 73 transform: none; 74 } 75} 76</style> 77 78<div style="background-color:blue;width:100%;height:100%"> 79 80<details open id="d1" style="margin-left:20%;width:20%;height:100%;float:left"> 81<summary style="height:5%" onclick="d2.removeAttribute('open');d3.removeAttribute('open');d4.removeAttribute('open')">Menu1</summary> 82<div class="details-content" style="height:95%;width:100%"> 83<div style="background-color:red;margin-left:-100%;width:500%;height:100%"> 84<div style="width:100%;height:25%;" class="hover_color">sample</div> 85<div style="width:100%;height:25%;" class="hover_color">sample</div> 86<div style="width:100%;height:25%;" class="hover_color">sample</div> 87<div style="width:100%;height:25%;" class="hover_color">sample</div> 88</div> 89</div> 90</details> 91 92 93<details id="d2" style="width:20%;height:100%;float:left"> 94<summary style="height:5%" onclick="d1.removeAttribute('open');d3.removeAttribute('open');d4.removeAttribute('open')">Menu2</summary> 95<div class="details-content" style="height:95%;width:100%"> 96<div style="background-color:green;margin-left:-200%;width:500%;height:100%"> 97<div style="width:100%;height:25%;" class="hover_color">sample</div> 98<div style="width:100%;height:25%;" class="hover_color">sample</div> 99<div style="width:100%;height:25%;" class="hover_color">sample</div> 100<div style="width:100%;height:25%;" class="hover_color">sample</div> 101</div> 102</div> 103</details> 104 105 106<details id="d3" style="width:20%;height:100%;float:left"> 107<summary style="height:5%" onclick="d1.removeAttribute('open');d2.removeAttribute('open');d4.removeAttribute('open')">Menu3</summary> 108<div class="details-content" style="height:100%;width:100%"> 109<div style="background-color:blue;margin-left:-300%;width:500%;height:100%"> 110<div style="width:100%;height:25%;" class="hover_color">sample</div> 111<div style="width:100%;height:25%;" class="hover_color">sample</div> 112<div style="width:100%;height:25%;" class="hover_color">sample</div> 113<div style="width:100%;height:25%;" class="hover_color">sample</div> 114</div> 115</div> 116</details> 117 118 119<details id="d4" style="width:20%;height:100%;float:left"> 120<summary style="height:5%" onclick="d1.removeAttribute('open');d2.removeAttribute('open');d3.removeAttribute('open')">Menu4</summary> 121<div class="details-content" style="height:100%;width:100%"> 122<div style="background-color:yellow;margin-left:-400%;width:500%;height:100%"> 123<div style="width:100%;height:25%;" class="hover_color">sample</div> 124<div style="width:100%;height:25%;" class="hover_color">sample</div> 125<div style="width:100%;height:25%;" class="hover_color">sample</div> 126<div style="width:100%;height:25%;" class="hover_color">sample</div> 127</div> 128</div> 129</details> 130
>の横並びが絶望的です
個人の感覚より起きている現象や実現したいこと
「要件」をそのまま記載してください。
あと提示されたCSSは.cssに記載したものですか?
HTMLに書いたものですか?
前者なら動かないのは当然です。.cssにstyleタグは不要。
すみません、分かりやすく分けたつもりでしたが、
.cssでではなく同一ページに書いております
コピペで再現できるコートにしてください。
コードブロックが分かれている場合は通常、別ファイルとして認識します。
ただ、その前に、インラインスタイルを入れすぎな方が絶望的に思います(メンテナンス性、可読性の観点で)
コピペで再現できるコードにしました
details summaryのwidthを指定して横並びにした場合に、
details内部の幅をいくら広げても、summaryの部分をマウスで通過しないとマウスイベントが発生しない現象を、
突破できる方はいらっしゃいませんでしょうか?
回答1件
あなたの回答
tips
プレビュー