1分でできるiframe組み込みのYouTube Player API

YouTube Player APIとは

Webサイト内にYouTubeの動画をJavaScriptで追加できるAPI。

HTML内にiframeを貼り付ける埋め込みとは異なり、JavaScriptで特定の条件をif文で出し分けて表示させることもできます。
(日時によって表示させる動画を出し分けるなど)

YouTube Player APIの使い方

単純に動画を表示させるだけなら以下のHTMLとJavaScriptのコードを貼り付けるだけ。

M7lc1UVf-VE」はYouTubeのURLのvideoIdです。

https://www.youtube.com/watch?v=M7lc1UVf-VE
<div id="ytplayer"></div>
const script = document.createElement('script')
script.src = 'https://www.youtube.com/player_api'
document.head.appendChild(script)

function onYouTubePlayerAPIReady() {
  new YT.Player('ytplayer', {
    videoId: 'M7lc1UVf-VE',
  })
}

YouTube Player API サンプル

YouTube動画はデフォルトだと640x360のサイズで表示されますが、以下のようにパラメーターを指定することでwidthとheightは変更可能です。

function onYouTubePlayerAPIReady() {
  new YT.Player('ytplayer', {
    videoId: 'M7lc1UVf-VE',
    playerVars: {
      width: 1280,
      height: 720,
    },
  })
}

YouTube 幅1280px サンプル

YouTube Player APIの自動再生

YouTube動画を自動再生する場合は以下のようにplayerVarsプロパティを追加してautoplayとmuteを設定します。

function onYouTubePlayerAPIReady() {
  new YT.Player('ytplayer', {
    videoId: 'M7lc1UVf-VE',
    playerVars: {
      autoplay: 1,
      mute: 1,
    },
  })
}

自動再生は「autoplay: 1」だけでなく「mute: 1」も指定されていないと有効化されないので注意が必要です。

※ ただし、スマートフォン(iOS, Android)の場合はこの方法でも自動再生は不可です。

YouTube Player API 自動再生サンプル

YouTube iframeのレスポンシブ対応

YouTubeのiframeは幅と高さが固定なので、そのままだとスマートフォンで見た際に表示領域からはみ出して表示されてしまいます。

レスポンシブWEBデザインに対応する場合は #ytplayer を #ytplayerWrap で囲んでCSSを以下のように指定してレスポンシブ対応にします。

<div id="ytplayerWrap">
  <div id="ytplayer"></div>
</div>
@media screen and (max-width: 640px) {
  #ytplayerWrap {
    position: relative;
    width: 100%;
    padding-top: 56.25%;
  }

  #ytplayer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
}

YouTubeのレスポンシブ対応サンプル