Works

YouTube
クラスc-video
を付与した要素(ここではfigure要素)の中に、のちにiframe要素となる空のdiv要素を包括した.wrap
要素と、停止中のサムネイル画像を包括した.poster
要素を入れる。空のdiv要素には動画メディアのサイズを記述し、data-ytid属性にYouTubeの動画IDを指定。
さらに空のdiv要素にクラスjs-yt
を付与し、.poster
要素にはクラスjs-ytControl
を付与。互いにdata-playero属性で「ユニークな同じ値(ここではsamplePlayer
)」を指定し紐付ける。

オプション
YouTube Player APIのプレーヤーのパラメータを、data-vars属性に指定することで対応している。
主なパラメータは以下の通り。
controls
- 動画プレーヤーのコントロールを表示するかどうか。デフォルトは
1
でコントロールを表示する。 modestbranding
- 動画プレーヤーに、YouTubeのロゴを表示させないかどうか。デフォルトは
0
でロゴが表示される playsinline
- 動画をインライン(その要素内)で再生するかどうか。デフォルトは
0
で全画面で再生される。
(※おそらく全画面で再生されるのはiPhoneのみだと思われる。) rel
- 動画の再生が終了した時に表示される「関連動画」および、停止中に表示される「その他の動画」が、同じチャンネルから選択されるかどうか(ミックスリストは除く)。デフォルトは
0
で他チャンネルの動画も含まれる。 autoplay
- プレーヤーを読み込んだときに最初の動画を自動再生するかどうか。デフォルトは
0
で自動再生しない。 loop
- 動画をループ再生するかどうか。デフォルトは
0
でループ再生しない。 playlist
- 動画IDをカンマ区切りのリスト形式で指定すると、data-ytid属性で指定した動画の次に、順に再生される。
ただし、パラメータのうち、controls=0
、modestbranding=1
、playsinline=1
、rel=0
は指定済みなので、例えば、YouTubeのコントロールを表示させたい場合は、data-vars属性にcontrols=1
を指定すること。
仕組み
.js-yt
を付与した空div要素と、.js-ytControl
を付与したなんらかの要素が、data-player属性で紐付いていれば機能するので、例えばここをクリックしても再生/停止できる。
動画だけ設置したい
ただYouTube動画を埋め込みたいだけならば、公式の「共有」の「埋め込む」からiframe要素をコピペするとよい。
適宜src属性のURLに、パラメーター(?controls=0&modestbranding=1&playsinline=1&rel=0
)を付け加えると、下のサンプルと同じ条件で設置できる。
ビューポートの幅が狭いときに動画の高さが伸縮しないのが気になる場合は、iframe要素に、スタイルaspect-ratio:16/9;
とheight:auto;
を指定するとよい(※ただしaspect-ratio
はその動画のアスペクト比に準ずる)。
どうしてもJavaScriptを介して設置したい場合は、空div要素を設置すれば、同じように設置できる。
※再生/停止ボタンがなくてもdata-player属性にユニークな値は必要なので注意。