<video>
タグのposter
属性に画像ではなく動画が指定されているのはミスでしょうか?
それはともかく、マウスが離れた際にposter
が表示されるようにするには、.load()
メソッドが利用できます。
つまり、
html
1<div class="stage">
2 <video class="v" poster="aaa.mp4" loop muted>
3 <source src="aaa.mp4">
4 </video>
5</div>
6
7
8<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
9<script>
10$(document).on({
11 mouseenter:function(){
12 $(this).addClass('on');
13 $(this).find('.v')[0].currentTime = $(this).find('.v')[0].initialTime || 0;
14 $(this).find('.v')[0].play();
15 },
16 mouseleave:function(){
17 $(this).removeClass('on');
18 // $(this).find('.v')[0].pause();
19 $(this).find('.v')[0].load(); // <= !!
20 }
21},'.stage');
22</script>
のようにすればいいです。ただ、これだと毎回動画が最初から始まってしまうので、それが困る場合は、マウスが離れたときの動画のcurrentTime
を保存しておいて、それを次に指定するようにすればいいです。
html
1<div class="stage">
2 <video class="v" poster="aaa.mp4" loop muted>
3 <source src="aaa.mp4">
4 </video>
5</div>
6
7
8<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
9<script>
10var savedTime = $(this).find('.v')[0].initialTime || 0; // <= !!!
11$(document).on({
12 mouseenter:function(){
13 $(this).addClass('on');
14 $(this).find('.v')[0].currentTime = savedTime; // <= !!!
15 $(this).find('.v')[0].play();
16 },
17 mouseleave:function(){
18 $(this).removeClass('on');
19 // $(this).find('.v')[0].pause();
20 savedTime = $(this).find('.v')[0].currentTime; // <= !!!
21 $(this).find('.v')[0].load(); // <= !!
22 }
23},'.stage');
24</script>
参考: Show HTML5 video poster on pause - Stack Overflow
(「video poster on pause」で検索しました)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/19 11:02