【jQuery】アクセスごとに動画とポスター画像をランダム表示させる方法
ページにアクセスするたび動画とポスター画像を変える動きをサイトに実装する際に調べたので、
自分のメモとしても残しておきたいと思います。jQueryを用いて実装しました。
まず、デモを確認されたいかたは以下ページをご覧ください。
デモページを確認する
コード
コードは以下の通り。
HTML
<video class="random_video" poster="movie1.jpg" src="movie1.mp4"></video>
※video タグ内のautoplayなどは割愛しています。
jQuery
var videos = [
['movie1.mp4', 'movie1.jpg'],
['movie2.mp4', 'movie2.jpg'],
['movie3.mp4', 'movie3.jpg'],
['movie4.mp4', 'movie4.jpg']
];
var randomVideo = videos[Math.floor(Math.random() * videos.length)];
$(".random_video").attr({"src":randomVideo[0],"poster":randomVideo[1]});
解説
順を追って解説していきたいと思います。
var videos = [
['movie1.mp4', 'movie1.jpg'],
['movie2.mp4', 'movie2.jpg'],
['movie3.mp4', 'movie3.jpg'],
['movie4.mp4', 'movie4.jpg']
];
まず、var videosで動画とポスター画像を指定します。
var randomVideo = videos[Math.floor(Math.random() * videos.length)];
次に、var randomVideoでは上のvar videosで指定した何番目の動画・ポスター画像を表示するかを計算します。
0から1未満の少数を返すMath.random()と要素の数を取得するvideos.lengthをかけます。
それらで出た数値をMath.floorで囲うことで、いわゆる小数点を切り捨ててくれvar videosの1から4行目がランダムで指定されます。
数字に置き換えてみると、以下のようになります。(説明のためMath.random()の少数はキリのいい数にしています)
Math.floor(0.01 * 4 = 0.04) = 0
Math.floor(0.99 * 4 = 3.96) = 3
余談ですが、
var videos内の要素は4つあるのに、3までの数値しか返ってこないから4番目の要素は指定されないの?と思われた人もいるのではないでしょうか。
大丈夫です。[]で囲ったものを指定するときは0からと決まっているのでこれらの計算式で4つの要素を指定することができるのです。
var videos = [
['movie1.mp4', 'movie1.jpg'], →0番目
['movie2.mp4', 'movie2.jpg'], →1番目
['movie3.mp4', 'movie3.jpg'], →2番目
['movie4.mp4', 'movie4.jpg'] →3番目
];
$(".random_video").attr({"src":randomVideo[0],"poster":randomVideo[1]});
最後に、クラス名「random_video」のついたvideoタグのsrcとposterを指定して完成です。
Javascriptの知識が豊富ではないため、調べながらjQueryを用いて試行錯誤しています。
今回は動画で実装しましたが、同様の方法でいろいろ活用できると思うので機会があれば試していきたいと思います。
Our Signature Products, Born from Insight.
提案から生まれた、
MARBLEの代表プロダクト
お客様の課題を起点に、MARBLEが自ら構想し、
仕組みからデザイン、開発、運用まで一貫してつくり上げたプロダクト群です。
業務改善、運営効率化、新たな顧客体験の創出など、
企業の事業成長に直結する“実装された解決策”を形にしています。
-
01 入退場システム
Entry System
全国15店舗、会員数50万人以上のこども向けパークで稼働する入退場・決済・顧客管理システム。
受付の効率化と回転率の向上を実現し、運営データの一元管理を可能にしています。 -
02 自動配送システム
Delivery Routing
50台のトラック、年間350日の配送を最適化する自動ルート生成システム。
紙のFAXで届く約500件の配送情報をデジタル化し、最適ルートを自動で算出することで、大幅な業務効率化を実現しました。 -
03 会話型コマース連携
Auto Routing
ライブチャットでの接客からEC購入までを一つの導線でつなぐ会話型コマースシステム。
リアルタイムの対話で顧客の購買意欲を高め、高いコンバージョン率につながる仕組みを構築しています。