次のコードを検討してください。
<ul class="nav">
<li>
<a href="#">Menu Item 1</a>
</li>
<li>
<a href="#">Menu Item 2</a>
<ul>
<li>
<a href="#">Menu Item 1</a>
</li>
<li>
<a href="#">Menu Item 2</a>
</li>
<li>
<a href="#">Menu Item 3</a>
</li>
</ul>
</li>
<li>
<a href="#">Menu Item 3</a>
</li>
</ul>
上記は単なる標準のメニューとサブメニューです。最初はサブメニューをオフスクリーンで非表示にしてleft: -999em
いますが、親アイテムにカーソルを合わせるとサブメニューがフェードイン/アウトするように不透明度をアニメーション化しようとしています:
.nav li:hover ul {
left: 0;
opacity: 1;
}
.nav ul {
position: absolute;
top: 100%;
left: -999em;
opacity: 0;
transition: opacity .3s linear;
}
ただし、メニューはフェードインするだけで、マウスアウトするとアニメーションなしで非表示になります。left: -999em
プロパティが原因だと思います。設定するleft: 0
と正常に動作しますが、サブメニューが非表示になっている場合でも、その上にカーソルを合わせるとサブメニューが切り替わると、このバグが発生します。この方法で不透明度をアニメーション化することは可能ですか?
コードのサンプルは次のとおりです: http://codepen.io/javiervd/pen/zseln
前もって感謝します。