いくつかの onmouseover イベント (javascript 関数と jquery アコーディオンの組み合わせ) がありますが、それらはマウスの正確な位置に過度に敏感で、トリガーが非常に困難であるか、マウスアウトして閉じるのが非常に簡単になっているようです。機能 (何かを選択したり、誤って間違った機能をトリガーしたりすることを非常に困難にします)。非常にタイトなレイアウトで作業しているため、要素間のスペースを増やすことはできません。
関数をトリガーする領域を拡大するか、レイアウトに影響を与えずにマウスオーバー要素の周囲の感度を下げる簡単な方法は何ですか? マージンとパディングで遊んでみましたが、役に立たないようです。
メニューで使用している JavaScript 関数の例を以下に示します。
# HTML #
<a style="top:13px; left:43px; position:absolute; z-index:31" href="createaccount.html">Create Account </a>
<ul class="menu" style="top:2px; left:99px; position:absolute;">
<li><a style=" text-align: left;" href="createaccount.html" onmouseover="mopen('m1')" onmouseout="mclosetime()">▶</a>
<div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
<a href="mybody.html" style="top:-9px; left: 16px">Quick Start</a>
</div></li>
</ul>
# Javascript #
var timeout = 150;
var closetimer = 0;
var ddmenuitem = 0;
function mopen(id) {
mcancelclosetime();
if (ddmenuitem) ddmenuitem.style.visibility = 'hidden';
ddmenuitem = document.getElementById(id);
ddmenuitem.style.visibility = 'visible';
}
function mclose() {
if (ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}
function mclosetime() {
closetimer = window.setTimeout(mclose, timeout);
}
function mcancelclosetime() {
if (closetimer) {
window.clearTimeout(closetimer);
closetimer = null;
}
}
document.onclick = mclose;
# CSS #
.menu div {
position: absolute; visibility: hidden; margin: 0px 0px 0px 7px; padding: 0; width: 120px; height:62px; background: black;}
.menu div a {position: relative; display: block; padding: 0px 0px 0px 0px; margin: -3px 0px 0px -9px; width: 105px; text-align: left; text-decoration: none; background: black; color: white; }