質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.31%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1654閲覧

特定の要素上のみでマウスストーカーさせたいのに追従しない

chibikurochan

総合スコア6

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2022/12/20 09:04

実現したいこと

動画上にマウスオンしたら、画像をマウスに追従させたい。
表示および追従させる範囲は、動画上のみとしたいです。

マウスストーカーの稼働範囲…movieのclassが付いたdiv要素
マウスストーカー…mouse-stalkerのclassが付いたimg要素

発生している問題

動画上で画像がマウスに追従しません。

該当のソースコード

HTML

1<div class="movie"> 2 <iframe width="790" height="605" src="https://www.youtube.com/embed/hlWiI4xVXKY"></iframe> 3 <div id="mouse-stalker-wrap" class="mouse-stalker-wrap"> 4 <img class="mouse-stalker" src="assets/img/mouse-stalker.png" alt="" /> 5 </div> 6</div>

CSS

1.movie { 2 position: relative; 3 max-width: 790px; 4 width: 100%; 5 height: 605px; 6 aspect-ratio: 16/9; 7} 8 9.movie:hover .mouse-stalker { 10 z-index: 100; 11 position: fixed; 12 transition: all 0.6s ease; 13} 14 15.first-view .mouse-stalker { 16 position: fixed; 17 width: 128px; 18 height: 128px; 19 opacity: 0; 20 transition: 0.2s; 21 transition-timing-function: ease-out; 22 pointer-events: none; 23}

jQuery

1function $mouseStalker() { 2 var cursor = $('.big-play-movie-icon'); 3 $('.movie').on('mousemove', function (e) { 4 var x = e.clientX; 5 var y = e.clientY; 6 cursor.css({ 7 opacity: '1', 8 top: y + 'px', 9 left: x + 'px', 10 }); 11 }); 12 }

試してみたこと

①index.jsのxyの値が正しく取れているかどうかをconsole.logで確認し、正しく取れていること(=マウスを動かすと永続的に数値が変化すること)を確認済み。
②index.jsの$('.movie').on('mousemove', function (e) {'.movie''document'に変更すると、動画以外の範囲でのみ画像がスムーズに追従することを確認。つまり、'.movie'が悪影響を起こしているのでは?と推測し、'.movie' iframe'に変更してみたが追従しない。
iframeが悪影響を起こしていると推測し、CSSファイル内でiframeに対して"display: block;"のスタイルを追加してみたが変化なし。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

iframe上で呼び出し元のマウスストーカーを表現したいということですか?
iframeは別のページですから親ページのCSSは適用されませんが・・・
試した範囲ではすごく不安定な状態で追従することもあるレベルでとても実用レベルにはもっていけない

参考

javascript

1<style> 2.big-play-movie-icon{ 3position:absolute; 4} 5</style> 6<script> 7window.addEventListener('DOMContentLoaded', ()=>{ 8 const cursor = document.querySelector('.big-play-movie-icon'); 9 document.querySelector('.movie').addEventListener('mousemove',e=>{ 10 const x = e.clientX; 11 const y = e.clientY; 12 Object.assign(cursor.style,{ 13 top: y + 'px', 14 left: x + 'px', 15 }); 16 }); 17}); 18</script> 19<div class="movie"> 20<iframe width="790" height="605" src="https://www.youtube.com/embed/hlWiI4xVXKY"></iframe> 21<div id="mouse-stalker-wrap" class="mouse-stalker-wrap big-play-movie-icon"> 22<svg width=60 height=50> 23<circle cx=10 cy=10 r=10 fill=black /> 24<circle cx=50 cy=10 r=10 fill=black /> 25<circle cx=30 cy=30 r=20 fill=black /> 26</svg> 27</div> 28</div> 29

投稿2022/12/20 09:33

編集2022/12/21 02:21
yambejp

総合スコア117644

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chibikurochan

2022/12/20 11:19

yamabejpさん回答ありがとうございます。 呼び出し元とは、img要素のことで認識合っていますでしょうか。 でしたら、おっしゃる通り、iframe上でimg要素をマウスストーカーを表現したいということです。 動画の挿入方法が、iframeである限り実現したい実装は不可能ということでしょうか?
yambejp

2022/12/20 12:18

> 実装は不可能ということでしょうか? 不可能ではないですが安定した動作をしないため限りなく不可能に近いということです
chibikurochan

2022/12/21 01:54

実用レベルに達しないということは理解しました。 不可能でない場合、マウスストーカーさせるには記述のどの部分を直せば良いのでしょうか。
yambejp

2022/12/21 02:23

参考データつけておきました。基本的には質問者さんがご提示されたソースで問題ないです。 iframe上の端っこの方にマウスをのせると「マウスストーカー」がついてくる場合もあれば ついてこない場合もあります。
chibikurochan

2022/12/23 12:56

参考データありがとうございます。 参考データの記述をコピペして確認してみましたが、マウスストーカーが追従しません。 ちなみに私の記述と異なる点としては、.big-play-movie-iconのpositionがfixed→absoluteにされているくらいでしょうか? あとはjsの記述内容については、意味的に私の記述内容と同じですよね? 私の記述のどの部分が原因で追従しないのかが、わかりません…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問