質問するログイン新規登録

Q&A

解決済

1回答

374閲覧

マウスカーソルを当てている時間が短くてもホバーアニメーションを最後まで実行させる

enjoyannna

総合スコア9

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2024/05/02 00:16

編集2024/05/02 06:45

0

0

実現したいこと

【作成済動作】
①要素にマウスカーソルを当てると隠れていた画像がスライドしながら現れる
②カーソルを離ししばらくすると再び画像が隠れ元に戻る

こちらの①の動作を、カーソルが当たる時間が一瞬だとしても最後まで動作が完了するようにすることは可能でしょうか。

発生している問題・分からないこと

現状ではスライドの途中でカーソルを離すと画像が一部しか現れていない状態で動作が止まってしまいます。

●カーソルを最後まで当てている場合
イメージ説明

●カーソルが一瞬のみ当たっている場合
イメージ説明

サイト内検索で過去に類似質問(URL)がありましたが、JavaScript初心者のため自身の事例に置き換えた修正が出来ず、そもそも流用できる事例なのかも判断が出来ませんでした。
上記サイトの解決方法と同じである必要はありませんがご教示頂けますと幸いです。

該当のソースコード

<div class="sample"> <img src="img.png"> </div>
/* 画像の親要素のスタイル */ .sample { overflow: hidden; } /* 画像のスタイル */ .sample img { width: 100%; height: 100%; transform: translateY(-100%); transition: transform 0.2s; transition-delay: 3s; } /* hoverすると画像が下がる */ .sample:hover img { transform: translateY(0); transition-delay: 0s; }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

解決出来ませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

yambejp

2024/05/02 00:20

質問が曖昧なので図示できませんか?
guest

回答1

0

ベストアンサー

ちょっと微妙ですがこういうのでどうですか?
hover時にhoverクラスをつけ、transitionが終わったらはずす

html

1<style> 2.sample { 3 overflow: hidden; 4} 5.sample img { 6 width: 100%; 7 height: 100%; 8 transform: translateY(-100%); 9 transition: transform .2s; 10 transition-delay: 3s; 11} 12.sample:hover img , 13.sample.hover img { 14 transform: translateY(0); 15 transition-delay: 0s; 16} 17</style> 18<script> 19document.addEventListener('mouseover',({target})=>{ 20 if(target.matches('.sample')){ 21 target.classList.add('hover'); 22 } 23}); 24document.addEventListener('transitionend',({target})=>{ 25 const hover=target.closest('.hover'); 26 if(hover){ 27 hover.classList.remove('hover'); 28 } 29}); 30</script> 31<div class="sample"> 32<img src="https://placehold.jp/100x100.png"> 33</div>

投稿2024/05/02 05:52

yambejp

総合スコア118405

enjoyannna

2024/05/02 06:47

図示の件遅くなり申し訳ありませんでした 今更ではありますが質問内容を編集し動画キャプチャを追加しております 上記コードで実現したい動作になりました、ありがとうございます!
yambejp

2024/05/02 06:50

だいたいイメージ通りだったようでよかったです
enjoyannna

2024/05/07 05:33

解決後の追加質問になり申し訳ありません transform: translateY(-100%)が-100%の時は問題ないのですが、-50%に変更すると修正前同様に途中で止まってしまいました 上記の場合に同じ動作を行うには全く別のコードが必要でしょうか 質問の続きにあたると思いこちらに記載させて頂きましたが、ここでの問いが不適切であれば新規質問を作成致します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問