私はこのパーティーに非常に遅れていますが、これを行うにははるかに良い方法があるので、将来のブラウザのために追加したいと思います。この効果のためにjQueryはまったく必要ありません。
まず、2つのアイテムをコンテナーにラップし(ここでは、クラスでdivを使用していcontainer
ます)、hoveで表示/非表示にするアイテムにクラスを適用します(ここでは、要素でshow-on-hover
クラスを使用しています)。#divId
<div class="container">
<a id="hlDiv" href="...">link text</a>
<div class="show-on-hover" id="divId">popup stuff</div>
</div>
次に、CSSを次のように設定します。
.container > .show-on-hover { display: none; }
.container:hover > .show-on-hover { display: block; }
#divId { /* whatever styles you want */ }
その結果、ホバーは完全にCSSによって制御されるようになりましたが、元々の1sトランジションはありません。これはもう少し複雑です(現在、IEでは機能しませんが、IE10以降でサポートされる予定です)。
CSSを次のように変更するだけです。
.container { position: relative; }
.container > .show-on-hover { opacity: 0.0; position: absolute; }
.container:hover > .show-on-hover { opacity: 1.0; }
.show-on-hover {
-webkit-transition: opacity 1s; /* Chrome / Safari */
-moz-transition: opacity 1s; /* Firefox */
-o-transition: opacity 1s; /* Opera */
}
相対的な配置とは.container
、コンテナが子要素とその配置に独自の境界ボックスを設定することを意味します。つまり、> .show-on-hover
スタイリングをposition: absolute;
に設定すると、その親に制限されたままになります(例として設定した場合、画面ではなく、left: 0;
の左端に移動します)。.container
トグルにより、絶対位置にあるアイテムが配置された場所に表示/非opacity
表示になります(CSSを更新して、ハイパーリンクに対して希望の場所に正確に配置します)。使用しなくなったため、非表示の場合でも(これはおそらく必要なものではありません)、常に画面上のスペースを占有しますdisplay: none
。DIV
最後に、トランジションを設定する最後のブロックは、クラスの要素で不透明度が変化するたびに、.show-on-hover
その変化を1秒以上のトゥイーンとして発生させることを最新のブラウザーに通知します。
遷移を示すjsFiddleは次のとおりです。http://jsfiddle.net/TroyAlford/nHrXK/2
そして、これがトグルだけを示すjsFiddleです:http://jsfiddle.net/TroyAlford/nHrXK/3/