私はブートストラップを使用してカスタムメニューアニメーションを作成しようとしています。私は3つのステージを持っていたいと思います。最初にホバリングされたとき、フォーカスされたとき(メニューアイコンが押されたとき)、フォーカスが外れているとき(メニューアイコンが再び押されたとき)、最後にフォーカスされます。CSSのホバリング、フォーカスと "フォーカスのない"
メニュー:メニューが押されたときにホバー第バー
#custom-bootstrap-menu.navbar-default .navbar-toggle .bar:nth-of-type(1) {
display: block;
width: 3em;
margin: 0.3em;
border: 0.1em solid white;
transition-duration: 600ms;
}
#custom-bootstrap-menu.navbar-default .navbar-toggle .bar:nth-of-type(2) {
display: block;
width: 1em;
margin-left: 2.7em;
transform: rotate(90deg);
border: 0.1em solid white;
transition-duration: 600ms;
}
#custom-bootstrap-menu.navbar-default .navbar-toggle .bar:nth-of-type(3) {
display: block;
width: 3em;
margin: 0.3em;
border: 0.1em solid white;
transition-duration: 600ms;
margin-right:0.5em;
}
CSS animation on hover:
#custom-bootstrap-menu.navbar-default .navbar-toggle:hover .bar:nth-of-type(2) {
margin-left: 1.4em;
}
CSS animation on focus:
#custom-bootstrap-menu.navbar-default .navbar-toggle:focus .bar:nth-of-type(2) {
margin-left: -0.1em;
}
<nav id="custom-bootstrap-menu" class=" navbar navbar-default navbar-static-top" role="navigation">
<div class="navbar-header">
\t \t \t <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navHeaderCollapse">
\t \t \t \t <span class="bar"></span>
\t \t \t \t <span class="bar"></span>
\t \t \t \t <span class="bar"></span>
\t \t \t </button>
\t </div>
</nav>
が右から中央へ移動され、その後、バーが左に移動します。私の問題は、フォーカスされているので何も起こっていない(バーはまだ左側にある)ので、メニューのフォーカスを外してプロセスをリセットする必要があるということです。
メニューアイコンをもう一度押すと、同じことが起こりますので、2回目に押すとアイコンを非表示にします(バーは右側に移動する必要があります)。
のようなものにホバーCSSの変更、ありがとうございます。フォーカスをクリアしますが、メニューアイコンからマウスを離した場合に限ります。この状況では、メニューアイコンを最初に押してからもう一度まっすぐに、カーソルはメニューアイコン上にありますが、何も起こっていません。 – jacoboy
ボタンをクリックするたびにオンとオフを切り替えると、2番目のクリックで垂直バーが右に戻ります。 – Nikkorian
私の修正された答えでは、ボタンの状態を判断するために簡単に参照できる変数 "isfocused"があることに注意してください。 – Nikkorian