本質的には複製したいli:hover+li
のですが、それよりも少し複雑です。私はCSSトランジションをいじっていて、(使いやすさのために)閉じるのが遅いドロップダウンメニューを作ろうとしています。つまり、マウスをメニューの外に移動しても、すぐには消えません。
問題なく動作しましたが、トップ レベルのアイテムから次のアイテムに移動すると、前のメニューが 1 秒間開いたままになります。これはドロップダウンなしの単純化された例で、トップ レベルのアイテムを移行するだけです。関連する CSS:
.menu > li {
background-color: #4F57AA;
/* transition out */
-webkit-transition: background-color .2s ease-in-out 1s;
}
.menu > li:hover {
background-color: #8F002E;
/* transition in */
-webkit-transition: background-color .2s ease-in-out;
}
.menu > li:hover+li {
-webkit-transition: background-color .2s ease-in-out;
}
そのため、メニューから完全に離れると、リスト項目は 1 秒待ってから青色にフェードバックします。ただし、「One」から「Two」に移動するとき、「One」のホバー状態も 1 秒待機します。
兄弟セレクターを使用して、右から左に移動するときに瞬時に遷移することができました。もちろん、「前の兄弟」セレクターはまだないため、その逆は機能しません。これらのトランジションをトリガーするために jQuery を少し使用したいのですが、ここで行き詰まりました。私はこれを試しました:
$('.menu > li').hover(
function() {
// instant transition for siblings?
$(this).siblings().css('-webkit-transition', 'background-color .2s ease-in-out');
},
function() {
// revert to regular transition?
$(this).siblings().css('-webkit-transition', 'background-color .2s ease-in-out 1s');
}
);
しかし、うまくいきません。何か案は?