はじめに
この記事の概要
こんにちは!株式会社TOKOSのエンジニアのタクヤです!
今回は YouTubeの動画をWebサイトのメインビジュアルに上手に埋め込む方法 をご紹介します!
YouTubeにアップロードされている動画をwebサイトのメインビジュアルにする際に、そのままiframeで埋め込んでしまうと動画の再生ボタンやYouTubeチャンネルのアイコンなどが表示されてしまいます。
それだとWebサイトのメインビジュアルに使うには少し心許ないですね。
そんな時のためにWebサイトのメインビジュアルように良い感じにYouTubeの動画を埋め込む方法をご紹介します!
簡単なのでぜひ使ってみてください!
対象読者
- Webサイトに動画を埋め込みたい方
- WebサイトのメインビジュアルにYouTubeの動画を埋め込みたい方
実装
YouTubeのIFrame Player APIを使用してYouTubeの動画を埋め込みます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>YouTubeの動画をWebサイトのメインビジュアルに上手に埋め込む</title>
<link rel="stylesheet" href="./reset.css" />
<link rel="stylesheet" href="./style.css" />
</head>
<body>
<div class="c-mv">
<div class="c-mv__container">
<h1 class="c-mv__title">Compfire By The River</h1>
</div>
<div id="youtube" class="c-mv__video"></div>
<div class="c-mv__mask"></div>
</div>
<script src="./index.js"></script>
</body>
</html>
.c-mv {
aspect-ratio: 16/9;
height: auto;
position: relative;
width: 100%;
}
.c-mv__container {
align-items: center;
display: flex;
height: 100%;
justify-content: center;
padding: 40px;
position: relative;
width: 100%;
z-index: 1;
}
.c-mv__title {
color: #fff;
font-size: 32px;
font-weight: 700;
margin: 0;
}
.c-mv__video {
bottom: 0;
height: 100%;
left: 0;
overflow: hidden;
opacity: 1;
position: absolute;
right: 0;
top: 0;
width: 100%;
z-index: 0;
}
.c-mv__mask {
background-color: rgba(0, 0, 0, 0.2);
position: absolute;
left: 0;
height: 100%;
top: 0;
width: 100%;
z-index: 2;
}
var tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
let player;
function onYouTubeIframeAPIReady() {
player = new YT.Player("youtube", { // youtbeの箇所はHTMLのid
videoId: "Ftm2uv7-Ybw", // YouTubeの動画のID
playerVars: {
playsinline: 1, // インライン再生
autoplay: 1, // 自動再生
fs: 0, // 全画面表示ボタン
rel: 0, // 関連動画
controls: 0, // コントロール
modestbranding: 1, // YouTubeロゴ
iv_load_policy: 3, // 注釈
},
events: {
onReady: onPlayerReady,
onStateChange: onPlayerStateChange,
},
});
}
// ミュートで再生
function onPlayerReady(event) {
event.target.mute();
event.target.playVideo();
}
// 最後まで再生した後のループ再生
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
event.target.playVideo();
}
}
コード全体について解説
HTMLはシンプルです。
- テキスト要素
- YouTubeのiframeが入る要素
- YouTubeのiframeをマスクする要素
<div class="c-mv">
<div class="c-mv__container"><!-- テキスト要素 -->
<h1 class="c-mv__title">Compfire By The River</h1>
</div>
<div id="youtube" class="c-mv__video"></div><!-- YouTubeのiframeが入る要素 -->
<div class="c-mv__mask"></div><!-- YouTubeのiframeをマスクする要素 -->
</div>
CSSは画面の横幅いっぱいに要素の大きさを設定し、YouTubeの動画に合わせてアスペクト比を設定しています。
また、YouTubeのiframeの上に来るマスク要素を用意することでiframeをユーザーが直接触れられないようにしています。
.c-mv {
/* 省略 */
aspect-ratio: 16/9; /* Youtubeの動画のアスペクト比 */
}
.c-mv__container {
/* 省略 */
z-index: 1; /* テキスト要素を真ん中の層に配置 */
}
.c-mv__video {
/* 省略 */
z-index: 0; /* テキスト要素を下の層に配置 */
}
.c-mv__mask {
/* 省略 */
z-index: 2; /* テキスト要素を上の層に配置 */
}
javascriptでは、IFrame Player APIのドキュメントをほとんどそのまま使用しています。
変えるところは、HTMLのid
とYouTubeの動画のID
くらいです。
ローディング画面などはお好みで付け加えてください!
function onYouTubeIframeAPIReady() {
player = new YT.Player("youtube", { // youtbeの箇所はHTMLのid
videoId: "Ftm2uv7-Ybw", // YouTubeの動画のID
// 省略
});
}
さいごに
今回は YouTubeの動画をWebサイトのメインビジュアルに上手に埋め込む方法 を紹介しました! Webサイトのメインビジュアル用に良い感じに埋め込めたかと思います! 是非ご参考にしていただけたらと思います!