jQuery 2014-06-01

サクッと導入出来るjavascriptを使ったカウントダウンタイマー

timer

追記 : 大変申し訳ございませんが、デモサイト等の当サイトのGoogleアナリティクスコードのコピーは避けて下さい。
デモサイトのページを丸ごとコピペすると当サイトのアナリティクスコードまで貼り付けられますので、貼り付けた場合は、削除の方をよろしくお願い致します。

今回は、イベントの告知やタイムセールの告知に使えるjavasriptで作るカウントダウンタイマーの紹介です。
よくネットショップなんかで見るとは思いますが、

【ポイント10倍終了まで : 1時間15分15秒00】
デモページもご用意しましたのでご参考下さい。

デモページ

みたいなのです。
最近では、楽天スーパーSALE!!があっているのでカウントダウンタイマーを使われている店舗さんも多いんじゃないんでしょうか?
ネットショップなんかでは販売促進なんかによく利用されているのですが、なかなか時間も無いし・導入方法がわからない。
って方もいるかとは思いますので、今回はhtmlcssなら多少分かる程度方向けで記事を書いていきたいと思います。

まずは、どのようなカウントダウンタイマーを作りますかというと、【任意の指定の時間になったら指定の文字(文章)を表示する】タイマーを作って行きたいと思います。
それともう一つ、【イベントが始まる時間を指定して始まる時間までカウントダウンを表示しイベントが始まったらそのイベントの終わる時間をカウントダウンタイマーで表示しイベントの終わる時間が来たら指定の文字を表示させる】タイマーを作っていきたいと思います。

利用方法

まずは、htmlファイルなどに下記のコードをカウントダウンタイマーを表示させたい場所に加えて下さい。

コードの記載

<!--カウントダウン-->
<div class="wrap clearfix">
<p class="timetext" id="text"></p><div id="CDT"></div>
<script type="text/javascript">
function CountdownTimer(elm,tl,mes){
 this.initialize.apply(this,arguments);
}
CountdownTimer.prototype={
 initialize:function(elm,tl,mes) {
  this.elem = document.getElementById(elm);
  this.tl = tl;
  this.mes = mes;
 },countDown:function(){
  var timer='';
  var today=new Date();
  var day=Math.floor((this.tl-today)/(24*60*60*1000));
  var hour=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*60*1000));
  var min=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*1000))%60;
  var sec=Math.floor(((this.tl-today)%(24*60*60*1000))/1000)%60%60;
  var milli=Math.floor(((this.tl-today)%(24*60*60*1000))/10)%100;
  var me=this;

  if( ( this.tl - today ) > 0 ){
   if (day) timer += '<span class="day">'+day+'日と</span>';
   if (hour) timer += '<span class="hour">'+hour+'時間</span>';
   timer += '<span class="min">'+this.addZero(min)+'分</span><span class="sec">'+this.addZero(sec)+'秒</span><span class="milli">'+this.addZero(milli)+'</span>';
   this.elem.innerHTML = timer;
   tid = setTimeout( function(){me.countDown();},10 );
  }else{
   this.elem.innerHTML = this.mes;
   return;
  }
 },addZero:function(num){ return ('0'+num).slice(-2); }
}

function CDT(){
 var text = '○○○○終了まで :';//ポイント10倍終了までなど【任意の文字】に変更して下さい。
 var tl = new Date('2040/06/25 00:00:00');//イベントの終了日時を入力して下さい。
 var timer = new CountdownTimer('CDT',tl,'終了しました。'); //【終了しました】を任意の文字に変更して下さい。
 timer.countDown();
 target = document.getElementById("text");
 target.innerHTML = text;
}

window.onload=function(){
 CDT();
}
</script></div>
<!--カウントダウン-->

上記のコードで変更する場所は、3つです。
上記をご参考下さい。

カウントダウンタイマーがどこに表示されるのかと言いますと、<div id="CDT"></div>の要素内に表示されます。

CSSでスタイル変更

次に、CSSでスタイルを変更していきたいと思います。
cssなどはご自身のサイトなどに合わせて下さい。下記のCSSを使わなくても全く問題ありません。

<style type="text/css">
.wrap{
	width:950px;
	margin-left:auto;
	margin-right:auto;
	padding:5px;
	border:solid 1px #CCCCCC;
	margin-bottom:10px;	
	}
.clearfix:after {
    content: "."; 
    display: block;
    clear: both;
    height: 0;
    visibility: hidden;
}
 
.clearfix {
    min-height: 1px;
}
 
* html .clearfix {
    height: 1px;
    /*¥*//*/
    height: auto;
    overflow: hidden;
    /**/
}
#CDT{
 font-size: 35px;
 color:#000;
 font-weight:bold;
 border-radius:15px;
 text-shadow:#FFF 1px 1px;
 margin-right:20px;
}
#CDT .day{
 font-size: 34px;
 color:#ff0000;
}
#CDT .hour,#CDT .min,#CDT .sec{
 font-size: 40px;
 color:#ff0000;
}
#Time{
	width:960px;
	margin:auto;	
	}
.sec{
	color:#fff;	
	}
.timetext{
	float:left;
	font-size:40px;
	font-weight:bold;
	margin-right:10px;
	margin:0;
	padding:0;
	}
</style>

上記のコードを記載し終わりましたら、以上でカウントダウンタイマーが表示されます。(cssは省いてもらっても結構です。)

応用編

ここからは、もう一つのカウントダウンタイマーを作っていきたいと思います。

やはり、終了日時の前に事前告知もユーザーに伝えたい時なんかにこちらのカウントダウンタイマーはいいかもしれません。

今回は、例として下記のような設定で行ってみたいと思います。

  • イベント開始日時 : 2014/08/15/ 00:00:00
  • イベント終了日時 : 2014/08/20/ 05:59:59
  • イベントが始まる3日前には事前告知用のカウントダウンタイマーを表示したい
  • イベント後も引き続き終了日時をカウントダウンタイマーで表示したい
  • イベントが終了したら、【終了しました】と表示させたい

上記を見る限り最初に作ったカウントダウンタイマーを使用すると、真夜中に一度手動で更新しなくてはいけません。
真夜中に手動で更新は大変だと思います。

今回は、この部分を自動化したカウントダウンタイマーを作って行きたいと思います。

応用編 コードの記載

<!--カウントダウン-->
<div class="wrap clearfix">
<p class="timetext" id="text"></p><div id="CDT"></div>
<script type="text/javascript">
function CountdownTimer(elm,tl,mes){
 this.initialize.apply(this,arguments);
}
CountdownTimer.prototype={
 initialize:function(elm,tl,mes) {
  this.elem = document.getElementById(elm);
  this.tl = tl;
  this.mes = mes;
 },countDown:function(){
  var timer='';
  var today=new Date();
  var day=Math.floor((this.tl-today)/(24*60*60*1000));
  var hour=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*60*1000));
  var min=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*1000))%60;
  var sec=Math.floor(((this.tl-today)%(24*60*60*1000))/1000)%60%60;
  var milli=Math.floor(((this.tl-today)%(24*60*60*1000))/10)%100;
  var me=this;

  if( ( this.tl - today ) > 0 ){
   if (day) timer += '<span class="day">'+day+'日と</span>';
   if (hour) timer += '<span class="hour">'+hour+'時間</span>';
   timer += '<span class="min">'+this.addZero(min)+'分</span><span class="sec">'+this.addZero(sec)+'秒</span><span class="milli">'+this.addZero(milli)+'</span>';
   this.elem.innerHTML = timer;
   tid = setTimeout( function(){me.countDown();},10 );
  }else{
   this.elem.innerHTML = this.mes;
   return;
  }
 },addZero:function(num){ return ('0'+num).slice(-2); }
}

function CDT(){
var day = new Date();
var saleday = new Date('2014/08/15 00:00:00');//イベント開始日時を入力
if((saleday - day) > 0) {
 var text = 'イベント開始まで :';//イベントが開始されるまでの文言を入力
 var tl = new Date('2014/08/15 00:00:00');//イベント開始日時を入力
 var timer = new CountdownTimer('CDT',tl);
 timer.countDown();
 target = document.getElementById("text");
 target.innerHTML = text;
}else{
 var text = 'イベント終了まで : ';//イベントが終了されるまでの文言を入力
 var tl = new Date('2014/08/20 05:59:59');//イベント終了日時を入力
 var timer = new CountdownTimer('CDT',tl,'終了しました。');//イベント終了後の文言を入力
 timer.countDown();
 target = document.getElementById("text");
 target.innerHTML = text;
	}
}

window.onload=function(){
 CDT();
}
</script></div>
<!--カウントダウン-->

上記のコードをカウントダウンタイマーを表示させたい場所に加えて下さい。
CSSなどの変更はありませんので、最初のCSSを使ってもいいですしご自身でCSSで装飾しても問題ありません。

ネットショップを運営されている方なんかは、意外とイベントやポイントアップなんかで使えるjavascriptのカウントダウンタイマーではないんでしょうか?
時間が無いっていう方なんかはコピペでサクッと導入出来ますので、是非機会があれば導入してみてはいかがでしょうか?
デモページもありますのでご参考下さい。

デモページ

オススメ書籍・アイテム

こちらの記事をシェアする

こちらの記事があなたのお役にたちましたら、シェアしていただけますと大変嬉しく今後のブログ更新の糧となりますのでどうぞよろしくお願いします。(^^♪

About

Glow-Facotryでは、無料・有料のWPテーマを配布・販売サイトです。また、Web関連やWPの記事・日常的(ゲームも)なことをブログを利用して発信して行きたいと思っております。
よかったら下記のフォローをお気軽にお願いします。

関連記事

コメント

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PREVIOUS wow

パララックスのようなスクロール アニメーションが超簡単に出来る 軽量スクリプト WOW.js使い方

NEXT thumbnail

WordPressのアイキャッチ機能を有効化しページに表示・出力しよう