Webサイトに表示する動画をアクセス毎に変えたい!

どうも、でんです!WeJaのWebサイトには、メンバーのichiinekiが制作した動画がトップページに掲載されています。最近までは第二作目のみを表示していたのですが、どうせならということで、両方の動画を表示することになりました。今回の記事では、Webサイトの表示される動画を、アクセス毎に変えるために書いたコードについて解説します!

実際に記述したコード

2種類の動画をWebサイトに掲載し、アクセスごとにどちらかのみが表示されるようにします。

HTML

<div class="MV">
  <video id="video1" src="<?php bloginfo('template_directory'); ?>/video/topvideo.mp4" loop autoplay muted playsinline></video>
  <video id="video2" src="<?php bloginfo('template_directory'); ?>/video/topvideo.mp4" loop autoplay muted playsinline></video>
</div>

CSS

.MV video:nth-of-type(2) {
	display: none
}

事前にHTMLで2本の動画を読み込み、CSSで2つ目のvideo要素を非表示にするように設定します。

JS

function shuffleContent(container) {
  var content = container.find("> *");
  var total = content.length;
  content.each(function() {
    content.eq(Math.floor(Math.random() * total)).prependTo(container);
  });
}

$(function() {
  shuffleContent($(".MV"));
});

【jQuery】ページを読み込む度に要素を並び替える(ネットショップ語り)を参考にさせていただきました。
.MVの子要素の順番をランダムにしています。そうすると非表示対象が変わり、結果的にランダムに動画を表示することができました。

おそらく、考え得る限りで最も簡単な方法だと思います。掲載する動画が増えても否定疑似要素を使えばOKですからね。また、JSを切っても表示崩れが起きないこともポイント高めです。

ただし、あまりにも掲載する動画が増えると表示速度が遅くなります。数あるコンテンツの中からランダムで表示したい場合は、別の方法で実装すると良さそうです。

まとめ

今回はJSによる要素の並び替えとCSSによって、ランダム表示を実装しました。前回はWordPressのfornt-page.phpについての記事を書きましたので、そちらもご覧ください。


この記事を書いた人:Den

Den