6 に答える
アーカイブとしてこの投稿に出くわした人のために、代わりにここに私のために働いたものがあります。
mouseout()を使用する代わりに、タグにmouseleave()を使用してみてください。
私の問題は、div内の要素が複数のmouseout呼び出しをトリガーした結果でした。親オブジェクトのMouseleaveはこれを解決しました。
jQueryを使用している場合は、hover
メソッドに切り替える必要があります。
それ以外の場合は、を確認してくださいe.target || e.srcElement
。
ブロック要素をアンカータグでラップしないでください。アンカータグはインライン要素です。それらをURLハッシュの名前付きの場所として(つまり、内部ページナビゲーションのために)使用しようとしている場合は、ページをスクロールする必要のあるコンテンツの上に配置するだけです。
divをクリックしたときに何かを起こそうとしている場合は、divにonclickハンドラーを配置します。
<span>
ええと、垂直方向のギャップがあります(2つのタグの間に改行が表示されます)。それを除く。
HTMLが有効とはほど遠いことにも注意してください。のようなインライン要素には、のような<a>
ブロック要素を含めることはできません<div>
。
これが問題を再現するコードの一部です。これをコピーして貼り付けてテストするか、テスト用にアップロードしたものと同じものをここで確認してください。
<html><head><style>
a {
float:left;
border:1px solid #b0b;
display:block;
}
.shpf,.shpe {
background:#b0b; float:left;
width:2px; height:2px;
padding:0; margin:0;
line-height:0;
}
.shpe {
background:#fff;
}
.shpbrk {
float:left; clear:both;
}
</style></head><body>
<a id="happy" href="javascript:void(0);"><div id="happy_button" class="button"><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpf"></span><span class="shpf"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span></div></a>
</body></html>
注:ricebowlが指摘したように、アンカーをブロック要素にすることができる<!doctype html>を使用しても、結果は同じです。アンカーにカーソルを合わせると、マウスアウトイベントがトリガーされ、ステータスバーでリンク先のリンクテキストが点滅します(少なくともFirefoxでは、他の場所ではテストされていません)。スパンは空です。これは通常は間違っていますが、&nbsp;を使用しても同じことが起こります。それらの中に。
解決策への道を切り開いた。position:相対アンカーと、幅と高さで100%拡張する内部のダミーdivは、アンカーを正確にオーバーレイするように絶対位置に配置されます。ホバリング時にリンクがちらつくことはなくなり、ダミーのマウスアウトイベントが発生することはありません。ここにコードがあり、ここにリンクがあります:
<html><head><style>
a {
float:left;
border:1px solid #b0b;
display:block;
position:relative;
}
.shpf,.shpe {
background:#b0b; float:left;
width:2px; height:2px;
padding:0; margin:0;
line-height:0;
}
.shpe {
background:#fff;
}
.shpbrk {
float:left; clear:both;
}
.dummy {
z-index:1;
position:absolute;
left:-1px; top:-1px; /* Fix for parent's border, isn't required for no border */
border:1px solid;
border-color:inherit;
background:transparent;
width:100%;
height:100%;
}
</style></head><body>
<a id="happy" href="javascript:void(0);"><div class="dummy"></div><div id="happy_button" class="button"><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpf"></span><span class="shpf"></span><span class="shpf"></span><span class="shpf"></span><span class="shpe"></span><span class="shpe"></span><span class="shpbrk"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span><span class="shpe"></span></div></a>
</body></html>