YouTubeの初期表示をサムネイルにする

同一ページ内に複数のYouTubeを埋め込むと、ページの読み込みが重くなってしまいます。
その対応として、初期表示はサムネイル画像を表示して、サムネイルをクリック後にYouTubeを埋め込むようにしてみます。

サンプルコード

HTML

#sample1~#sample3にサムネイル画像が入ります。

1
2
3
4
5
6
7
8
9
10
11
<div id="contents">
    <div class="ytBox">
        <div id="sample1"></div>
    </div>
    <div class="ytBox">
        <div id="sample2"></div>
    </div>
    <div class="ytBox">
        <div id="sample3"></div>
    </div>
</div>

CSS

サムネイル画像にオンマウス時にカーソルが変わるようにしておきます。

1
2
3
.ytBox img {
    cursor: pointer;
}

JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
var tag = document.createElement('script');
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
 
// 各プレーヤーの格納
var ytPlayer = [];
// プレーヤーのサイズ
var ytWidth = 640;
var ytHeight = 480;
// 各動画情報
var ytData = [
    {
        id: 'TSbSzrLffew',
        area: 'sample1'
    }, {
        id: 'fQ_m5VLhqNg',
        area: 'sample2'
    }, {
        id: 'p3ih4rDduug',
        area: 'sample3'
    }
];
 
// サムネイルの埋め込み
function onYouTubeIframeAPIReady() {
    for(var i = 0; i < ytData.length; i++) {
        // サムネイルの埋め込み
        document.getElementById(ytData[i]['area']).innerHTML = '<img id="yt-thumb' + i + '" src="http://i.ytimg.com/vi/' + ytData[i]['id'] + '/sddefault.jpg">';
        // 埋め込んだサムネイルにイベント追加
        ytEmbedding(i);
    }
}
 
// プレーヤーの埋め込み
function ytEmbedding(i) {
    document.getElementById('yt-thumb' + i).addEventListener('click', function() {
        ytPlayer[i] = new YT.Player(ytData[i]['area'], {
            width: ytWidth,
            height: ytHeight,
            videoId: ytData[i]['id'],
            playerVars: {
                rel: 0
            },
            events: {
                'onReady': onPlayerReady
            }
        });
    });
}
 
// プレーヤー読み込み後の処理
function onPlayerReady(e) {
    e.target.playVideo();
}

YouTubeの初期表示をサムネイルにするのデモページ
 

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2025年3月
 1
2345678
9101112131415
16171819202122
23242526272829
3031