【Moleskine Notebook with jQuery Booklet】を使用して本をめくれるような効果を実装

# 本をめくれるような効果を実装する為、今回【Moleskine Notebook with jQuery Booklet】というjQueryのプラグインを使用してみました。

[Moleskine Notebook with jQuery Booklet](https://tympanus.net/codrops/2010/12/14/moleskine-notebook/)

## Step1
まず、上記のサイトからダウンロードを行います。

ダウンロードすると下記のファイルが収納されています。

```
-booklet
-css
-cufon
-images
index.html
}
```

・booklet
本をめくる為に必要なjsファイル
・css
ベースとなるCSS
・cufon
手書き風にするfont
images
本の中の画像
そのまま使用したい場合はこのままでいいですが
デザインを変えたい場合はこちらで入れ替えればいいです。

## Step2
下記のファイルを
header要素に記入

```html
<script src="cufon/cufon-yui.js" type="text/javascript"></script>
<script src="cufon/ChunkFive_400.font.js" type="text/javascript"></script>
<script src="cufon/Note_this_400.font.js" type="text/javascript"></script>
<script type="text/javascript">
	Cufon.replace('h1,p,.b-counter');
	Cufon.replace('.book_wrapper a', {hover:true});
	Cufon.replace('.title', {textShadow: '1px 1px #C59471', fontFamily:'ChunkFive'});
	Cufon.replace('.reference a', {textShadow: '1px 1px #C59471', fontFamily:'ChunkFive'});
	Cufon.replace('.loading', {textShadow: '1px 1px #000', fontFamily:'ChunkFive'});
</script>
```

## Step3
本を設置させたい部分に下記のタグを設置。

```html
<div class="book_wrapper">

	<a id="next_page_button"></a>
	<a id="prev_page_button"></a>
	
	<div id="loading" class="loading">Loading pages...</div>
	
	<div id="mybook" style="display:none;">
		<div class="b-load">
		
			<div>
				<img src="images/1.jpg" alt=""/>
				<h1>Slider Gallery</h1>
				<p>This tutorial is about creating a creative gallery...</p>
				<a href="#" class="article">Article</a>
				<a href="#" class="demo">Demo</a>
			</div>
			
			<div>
				...
			</div>
			
		</div>
	</div>
</div>
```

## Step4
先ほどのタグの下に下記スクリプトを貼り付けます。

```js
<script type="text/javascript">
	$(function() {
		var $mybook 		= $('#mybook');
		var $bttn_next		= $('#next_page_button');
		var $bttn_prev		= $('#prev_page_button');
		var $loading		= $('#loading');
		var $mybook_images	= $mybook.find('img');
		var cnt_images		= $mybook_images.length;
		var loaded			= 0;
		//preload all the images in the book,
		//and then call the booklet plugin
			$mybook_images.each(function(){
			var $img 	= $(this);
			var source	= $img.attr('src');
			$('').load(function(){
				++loaded;
				if(loaded == cnt_images){
					$loading.hide();
					$bttn_next.show();
					$bttn_prev.show();
					$mybook.show().booklet({
						name:               null,                            // name of the booklet to display in the document title bar
						width:              800,                             // container width
						height:             500,                             // container height
						speed:              600,                             // speed of the transition between pages
						direction:          'LTR',                           // direction of the overall content organization, default LTR, left to right, can be RTL for languages which read right to left
						startingPage:       0,                               // index of the first page to be displayed
						easing:             'easeInOutQuad',                 // easing method for complete transition
						easeIn:             'easeInQuad',                    // easing method for first half of transition
						easeOut:            'easeOutQuad',                   // easing method for second half of transition
						closed:             true,                           // start with the book "closed", will add empty pages to beginning and end of book
						closedFrontTitle:   null,                            // used with "closed", "menu" and "pageSelector", determines title of blank starting page
						closedFrontChapter: null,                            // used with "closed", "menu" and "chapterSelector", determines chapter name of blank starting page
						closedBackTitle:    null,                            // used with "closed", "menu" and "pageSelector", determines chapter name of blank ending page
						closedBackChapter:  null,                            // used with "closed", "menu" and "chapterSelector", determines chapter name of blank ending page
						covers:             false,                           // used with  "closed", makes first and last pages into covers, without page numbers (if enabled)
						pagePadding:        10,                              // padding for each page wrapper
						pageNumbers:        true,                            // display page numbers on each page
						hovers:             false,                            // enables preview pageturn hover animation, shows a small preview of previous or next page on hover
						overlays:           false,                            // enables navigation using a page sized overlay, when enabled links inside the content will not be clickable
						tabs:               false,                           // adds tabs along the top of the pages
						tabWidth:           60,                              // set the width of the tabs
						tabHeight:          20,                              // set the height of the tabs
						arrows:             false,                           // adds arrows overlayed over the book edges
						cursor:             'pointer',                       // cursor css setting for side bar areas
						hash:               false,                           // enables navigation using a hash string, ex: #/page/1 for page 1, will affect all booklets with 'hash' enabled
						keyboard:           true,                            // enables navigation with arrow keys (left: previous, right: next)
						next:               $bttn_next,          			// selector for element to use as click trigger for next page
						prev:               $bttn_prev,          			// selector for element to use as click trigger for previous page

						menu:               null,                            // selector for element to use as the menu area, required for 'pageSelector'
						pageSelector:       false,                           // enables navigation with a dropdown menu of pages, requires 'menu'
						chapterSelector:    false,                           // enables navigation with a dropdown menu of chapters, determined by the "rel" attribute, requires 'menu'
						shadows:            true,                            // display shadows on page animations
						shadowTopFwdWidth:  166,                             // shadow width for top forward anim
						shadowTopBackWidth: 166,                             // shadow width for top back anim
						shadowBtmWidth:     50,                              // shadow width for bottom shadow
						before:             function(){},                    // callback invoked before each page turn animation
						after:              function(){}                     // callback invoked after each page turn animation
					});
					Cufon.refresh();
				}
			}).attr('src',source);
		});
		
	});
</script>
```
これで完成です。

### 欠点
レスポンシブデザインに対応していません。
ですのでスマホなどは別の実装を切り替えた方がいいでしょう。

#### プラグインについて
他のプラグンなどを多様に使用していた場合ですが
私は【iframe】を使用し別で作成しました。
ダウンロードーしたファイルをそのままカスタマイズしたので、１から作るよりは楽です。
※これがいい方法ではないかもしれませんが。

そしてスマホは
iframemの部分がすスマホの大きさの時はdisplay:noneで消し、PCの時に表示
スマホ時はSlick.jsなどでスライドショーにしておきました。

wordpressでは【wp_is_mobile()】　を使用して切り替えしてもいいかもしれません。