Webサイトにvideoタグで背景動画とSVGのドットの挿入方法

Webサイトにvideoタグで動画を挿入

Webサイトのページ内の背景に動画を挿入する場合は、videoタグでmp4などの動画ファイルを読み込むことがあります。

この記事では次のような構造のWebサイトで、最初の<section>部分の背景に動画を実装する方法について説明します。

HTML
<section class="section">
  <h1>content 1</h1>
</section>

<section class="section skyblue">
  <h1>content 2</h1>
</section>

videoタグを使用したサンプル1

このWebサイトの「content 1」の背景にvideoタグで動画を配置したい場合は、以下のようにvideoタグを書いて、「content 1」部分をdivタグで囲って、CSSで位置やサイズを調整するだけで実装できます。

videoタグには「autoplay loop muted」属性を付けて、「自動再生、ループ、消音」状態で再生されるようにします。

HTML
<section class="section">
  <div class="section-video-inner">
    <h1>content 1</h1>
  </div>
  <video class="video" src="sample.mp4" autoplay loop muted></video>
</section>

<section class="section skyblue">
  <h1>content 2</h1>
</section>
CSS
body {
  margin: 0;
  padding: 0;
}

.section {
  display: grid;
  place-items: center;
  position: relative;
  z-index: 2;
  width: 100%;
  aspect-ratio: 16 / 9;
}

.skyblue {
  background: skyblue;
}

.section-video-inner {
  display: grid;
  place-items: center;
  position: absolute;
  z-index: 2;
  width: 100%;
  height: 100%;
}

.video {
  width: 100%;
  height: 100%;
}

videoタグを使用したサンプル2

動画の上にSVGの白のドットを重ねる

サンプル2の動画(約1.3MB)を見ると、低画質のため荒れていることがわかります。

動画は高画質にすると、動画のファイルサイズが大きくなり、読み込みに時間がかかります。

そのため、Webサイトの背景に使用される動画は、ファイルサイズの小さい低画質の動画ファイルが使用されることが多いです。

しかし、低画質動画だと見た目が悪いので、下図のように動画の上に四角形のドットを配置して、低画質動画に見えないようにされることが多いです。

Webサイトにvideoタグで背景動画とSVGのドットの挿入方法

例: ブルーアーカイブ 公式サイト

動画の上に配置する四角形のドットはPNG画像でも作成できますが、以下のようにbackgroundにインラインでSVGを作成したほうが、色、透明度、などをエディタで簡単に変更できるのでオススメです。

CSS
.section-video-inner {
  display: grid;
  place-items: center;
  position: absolute;
  z-index: 2;
  width: 100%;
  height: 100%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='2' height='2' fill='white' opacity='0.5'/%3E%3Crect x='2' width='2' height='2' fill='none'/%3E%3C/svg%3E");
  background-size: 4px 4px;
}

videoタグを使用したサンプル3

ドットの色を黒にしたい場合は「fill='white'」を「fill='black'」または「fill='%23000'」に修正します。

CSSのbackgroundにインラインで記述する場合、「fill='#000'」だと反映されないので注意が必要です。

CSS
.section-video-inner {
  /* 中略 */
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='2' height='2' fill='black' opacity='0.5'/%3E%3Crect x='2' width='2' height='2' fill='none'/%3E%3C/svg%3E");
  background-size: 4px 4px;
}

videoタグを使用したサンプル4

動画の背景をfixedで固定する方法

Webサイトによっては動画をfixedで固定して、スクロースしても背景として、表示させ続けたいことがあります。

例: TVアニメ『戦隊大失格』公式サイト

そのような場合は、動画の背景を「position: fixed」で固定します。

HTML
<section class="section-video fixed">
  <div class="section-video-inner"></div>
  <video class="video" src="sample.mp4" autoplay loop muted></video>
</section>

<section class="section">
  <h1>content 1</h1>
</section>

<section class="section skyblue">
  <h1>content 2</h1>
</section>

<section class="section">
  <h1>content 3</h1>
</section>

<section class="section lightgreen">
  <h1>content 4</h1>
</section>
CSS
body {
  margin: 0;
  padding: 0;
}

.section {
  display: grid;
  place-items: center;
  position: relative;
  z-index: 2;
  width: 100%;
  aspect-ratio: 16 / 9;
}

.skyblue {
  background: skyblue;
}

.lightgreen {
  background: lightgreen;
}

.section-video-inner {
  display: grid;
  place-items: center;
  position: absolute;
  z-index: 2;
  width: 100%;
  height: 100%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='2' height='2' fill='black' opacity='0.5'/%3E%3Crect x='2' width='2' height='2' fill='none'/%3E%3C/svg%3E");
  background-size: 4px 4px;
}

.video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fixed {
  position: fixed;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
}

videoタグを使用したサンプル5

CSSのfilterで明度を変更する

黒を基調としたWebサイトだと黒のドットだけでは背景の動画が少し明るく見えることがあります。

そんなときは動画部分をfilterプロパティのbrightnessを適用して明度を変更できます。

CSS
.video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(0.5);
}

videoタグを使用したサンプル6