ページのサイドメニューでホバーすると2つの文字を用意した2番目の文字が下から出てきて表示最初の文字が上に押し出されて見えないようにcssを記述しています。
メニューのテキスト1からテキスト5までマウスを上下に早く動かすと動きが途中で止まってしまうのでjsコード等でアニメーションの動きが完了する前に他の要素をホバーしてもアニメーションの動きが完了させるような動きは実装可能でしょうか。
<div class="hamburger-menu-list-container01"> <a href="#" class="hamburger-menu-list01"> <span class="hamburger-menu-list-text01">テキスト1</span> <span class="hamburger-menu-list-text01">テキスト1</span> </a> <a href="#" class="hamburger-menu-list01"> <span class="hamburger-menu-list-text01">テキスト2</span> <span class="hamburger-menu-list-text01">テキスト2</span> </a> <a href="#" class="hamburger-menu-list01"> <span class="hamburger-menu-list-text01">テキスト3</span> <span class="hamburger-menu-list-text01">テキスト3</span> </a> <a href="#" class="hamburger-menu-list01"> <span class="hamburger-menu-list-text01">テキスト4</span> <span class="hamburger-menu-list-text01"テキスト4</span> </a> <a href="#" class="hamburger-menu-list01"> <span class="hamburger-menu-list-text01">テキスト5/span> <span class="hamburger-menu-list-text01">テキスト5</span> </a> <a href="#" class="hamburger-menu-list01"> <span class="hamburger-menu-list-text01">テキスト6</span> <span class="hamburger-menu-list-text01">テキスト6</span> </a> </div>
/* ボタン本体 */ .hamburger-menu-list01 { position: relative; display: block; height: 2em; width: 100%; line-height: 2em; text-decoration: none; overflow: hidden; cursor: pointer; margin-bottom: 0.54em; } .hamburger-menu-list01:last-child { margin-bottom: 0em; } /* ボタンのテキスト */ .hamburger-menu-list-text01 { position: absolute; left: 0; display: block; height: 100%; width: 100%; font-family: "Zen Kaku Gothic New", sans-serif; font-size: 1em; color: #000000; font-weight: 500; letter-spacing: 0.05em; white-space: nowrap; transition: all 0.3s; /*アニメーション実行時間 */ } /* ボタンのテキスト(デフォルトのテキスト) */ .hamburger-menu-list-text01:nth-child(1) { top: 0%; } /* ボタンのテキスト(隠れているテキスト) */ .hamburger-menu-list-text01:nth-child(2) { top: 100%; } /* ボタンホバーアクション */ .hamburger-menu-list01:hover .hamburger-menu-list-text01:nth-child(1) { top: -100%; transition: all 0.3s; } .hamburger-menu-list01:hover .hamburger-menu-list-text01:nth-child(2) { top: 0%; transition: all 0.3s; }
> 早く動かすと動きが途中で止まってしまう
止まってしまうのではなく、「2番目の文字が上に移動し終わる前に下に戻り始めてしまう」でしょうか?
欲しい動作は「2番目の文字が上に移動する途中で hover が外れた場合でも、上への移動を完了させ、完了後即座に下に移動して戻る」ということでしょうか。
ちょっと無理がある仕様ですけど
hoverしたら何がなんでも切り替えを終わらせるということだと思うのですが
切り替えが完了した時点でhoverは終わっているのでそこからまた元の文字に切り替えるのですよね?
この場合mouseover→mouseout→mouseoverとすると最初の処理が終わる前に次のmouseoverが発生して極度の遅延が発生し最悪なUIになりそうです
もう少し仕様をよく検討された方がよろしいかと・・・
・2番目の文字が上に移動し終わる前に下に戻り始めてしまうで合っています。
・2番目の文字が上に移動する途中で hover が外れた場合でも、上への移動を完了させ、完了後即座に下に移動して戻る」
こちらも合っています
mi-11さん
とりあえず回答した内容で動作が想定どおりかご確認ください