Authentication




Cancel OK
B!コメントする  2013-02-18 15:14:00 by old

Webで画像をペラペラめくる

電子書籍なんかでは普通にありますが、
ブラウザ上でペラペラと画像をめくれるものを作ってみた。

基本的にはカルーセルとかの応用を元に作っていたのですが
スワイプなんかで挫折して以下のものであっさりと作ってみた


jQuery
 説明の必要はないかな。JavaScriptとかいろいろと捗るヤツ
bootstrap(http://twitter.github.com/bootstrap/)
 Twitter社が出してるCSSのフレームワーク
carouFredSel[http://caroufredsel.dev7studios.com/]
 jQueryのプラグインでカルーセル機能でいろんな機能がある。

これを使うとすんなり画像をペラペラめくるものがブラウザー上で作成できる

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Book Reader</title>

<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet">

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>

<script src="js/jquery.carouFredSel-6.2.0-packed.js"></script>
<script type="text/javascript" language="javascript" src="helper-plugins/jquery.mousewheel.min.js"></script>
<script type="text/javascript" language="javascript" src="helper-plugins/jquery.touchSwipe.min.js"></script>
<script type="text/javascript" language="javascript" src="helper-plugins/jquery.transit.min.js"></script>
<script type="text/javascript" language="javascript" src="helper-plugins/jquery.ba-throttle-debounce.min.js"></script>

</head>
<body style="padding-top: 10px;">

<style>
a, a:link, a:active, a:visited
{
color: black;
text-decoration: underline;
}
.listcarousel
{
background-color: #ccc;
margin: 0 10 0px 10px;
}
.list
carousel ul
{
margin: 0;
padding: 0;
list-style: none;
display: block;
}
.listcarousel li
{
font-size: 40px;
color: #999;
text-align: center;
background-color: #eee;
border: 5px solid #999;

width: 896px;
height: 896px;

padding: 0;
margin: 6px;
display: block;
float: left;
}
.list
carousel.responsive
{
width: auto;
margin-left: 0;
}
.pager
{
float: left;
height: 32px;
text-align: center;
word-break: break-all;
}
.pager a
{
margin: 0 5px;
text-decoration: none;
}
.pager a.selected
{
text-decoration: underline;
}
</style>

<noscript><p>JavaScriptの設定を有効にしてください。</p></noscript>

<div class="container-fluid">
<div class="row-fluid">
<div class="span12">

<div id="myCarousel" class="carousel slide">
<div class="carousel-inner">
<div class="listcarousel responsive">
<ul id="carousel
object">
<?php
//ディレクトリオープン
$resdir = opendir( './samplebook/' );
// ファイル名取得
while( false !== ( $filename[] = readdir( $resdir ) ) );
closedir( $resdir );
// 並べ替え
sort($file
name);

$page = "1";
$filecount = count($filename);
//ディレクトリ内のファイル名を1つずつを取得
for( $i = 0; $i < $filecount; $i++ )
{
// 画像のみ表示
if( preg
match("/.jpg$|.gif$|.png$|.bmp$|.jpeg$/i", $filename["$i"]) )
{
echo " <li><img src=\"./sample
book/" . $filename["$i"] . "\" alt=\"" . $page . " page\" style=\"height: 896px;\"></li>\n";
$page++;
}
}
//echo " <li><a href=\"#\" style=\"height: 960px;\">Next Book</a></li>\n";
?>
</ul>
<div class="clearfix"></div>
<input type="button" id="prev" class="prev left carousel-control" style='width: 64px' value="<"></a>
<input type="button" id="next" class="next right carousel-control" value=">"></a>
<div id="pager" class="pager"></div>
</div>
</div>

</div>


</div><!-- End span -->
</div><!-- End row -->
</div><!-- End container -->

<script>
<!--
$(function() {
// Scrolled by user interaction
$('#carousel
object').carouFredSel({
auto: false,
width: '100%',
responsive: true,
prev: '#prev',
next: '#next',
pagination: "#pager",
mousewheel: true,
swipe: {
onMouse: true,
onTouch: true
}
});
});
//-->
</script>

</body>
</html>


jqueryはCDNからですが他はダウンロードしてそれぞれのフォルダにおいてください。
こちらでは以下のフォルダ構成になってます。

ルートディレクトリ(index.phpとか)
├/css/
├/helper-plugin/
├/img/
├/js/
└/samplebook/


それぞれのプラグインをそのままフォルダごと突っ込んだだけですけど。
あとは「sample
book」フォルダーに表示したい画像を突っ込んで
トップページをリロードすれば見ることができます。


指定している横幅なんかで見え方が変わりますので、その辺は使う人によって適当に変更してください。

欠点としては画像をバカスカ読み込むので大量に突っ込んでると大変かもしれないので一定量だけ読み込むようにしておいたほうがいいとは思います。

iGoogleの代わりのものがひと段落ついたのでしょうもないものつくったらまた出していきます。


JavaScript  

  • コメント
  • コメントはまだありません