探してみるとPCと共通で使えるものはあまりなく、
スマートフォン専用であるものがほとんどでした。
その中で、スマートフォンとPCと共通で使えるフォトギャラリーを見つけましたので
紹介します。
画像をフリック可能なフォトギャラリー
まずは、データフォルダのヘルプページでも使ってるフォトギャラリーです。
PCならマウスでドラッグ、スマートフォンならフリックで画像を切り替えられます。
PCとスマートフォン共通で利用できるので、別々なページに切り替える必要がなく便利です。
下部の画像をクリック/タップしても画像切替が可能です。
ちょっと長いですが、以下のソースコードだけで実装できます。
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<style id='page-skin-1' type='text/css'><!--
@charset "utf-8";
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
vertical-align: baseline;
font-family: inherit;
font-style: inherit;
font-weight: inherit;
/* outline: 0;*/
}
html { font-size: 75%; filter: expression(document.execCommand("BackgroundImageCache", false, true));}
img { vertical-align: text-bottom; -ms-interpolation-mode: bicubic;}
strong { font-weight: bold; }
ol, ul { list-style: none; }
table { border-collapse: collapse; border-spacing: 0; }
caption, th, td { font-weight: normal; text-align: left; vertical-align: top; }
blockquote:before, blockquote:after,
q:before, q:after { content: ""; }
blockquote, q { quotes: "" ""; }
a:focus { overflow: hidden; }
option { padding-right: 10px; }
body { font-size: 100%; line-height: 140%; font-family: Arial,Helvetica,sans-serif; color: #000; text-align: center; background: #eaeaea; }
a:link { text-decoration:none; color: #000;}
a:visited { text-decoration:none; color: #000;}
a:active { text-decoration:none; color: #000;}
a:hover { text-decoration:none; color: #000;}
h1 { margin-bottom: 20px; padding: 10px 0; background: #000; color: #fff; font-size: 12px; font-weight: bold; text-align: center; }
h2 { padding: 30px 0; width: 100%; font-size: 12px; }
#container { margin: 0 auto; width: 400px; text-align: center; }
#flickscroll { margin: 0 auto; width: 400px; height: 400px; text-align: left; position: relative; overflow: hidden; cursor: pointer; }
#flickscroll ul { top: 0; left: 0; height: 400px; position: absolute; overflow: hidden; }
#flickscroll ul li { width: 400px; height: 400px; float: left; display: inline; overflow: hidden; }
#flickthumb { margin: 10px auto; width: 400px; height: 100px; text-align: center; }
#flickthumb ul { width: 400px; height: 100px; }
#flickthumb ul li { width: 100px; height: 100px; float: left; cursor: pointer; display: inline; }
#flickthumb ul li.active { filter:alpha(opacity=100)!important; -moz-opacity: 1!important; opacity: 1!important; }
#flickscroll ul:after,
#flickthumb ul:after { content: "."; height: 0; clear: both; display: block; visibility: hidden; }
#flickscroll ul,
#flickthumb ul { display: inline-block; overflow: hidden; }
--></style>
<script language='javascript' type='text/javascript'>
$(function(){
var $setMainId = $('#flickscroll');
var $setThumbId = $('#flickthumb');
var scrollSpeed = 300;
var $setMainUl = $setMainId.children('ul'),
$setThumbUl = $setThumbId.children('ul'),
$setThumbLi = $setThumbUl.children('li'),
$setThumbLiFirst = $setThumbUl.children('li:first'),
listWidth = parseInt($setMainUl.children('li').css('width')),
listCount = $setMainUl.children('li').length,
leftMax = -((listWidth)*((listCount)-1));
$setMainUl.each(function(){
$(this).css({width:(listWidth)*(listCount)});
});
var isTouch = ('ontouchstart' in window);
$setMainUl.bind(
{'touchstart mousedown': function(e){
var $setMainUlNot = $setMainId.children('ul:not(:animated)');
$setMainUlNot.each(function(){
e.preventDefault();
this.pageX = (isTouch ? event.changedTouches[0].pageX : e.pageX);
this.leftBegin = parseInt($(this).css('left'));
this.left = parseInt($(this).css('left'));
this.touched = true;
});
},'touchmove mousemove': function(e){
if(!this.touched){
return;
}
e.preventDefault();
this.left = this.left - (this.pageX - (isTouch ? event.changedTouches[0].pageX : e.pageX) );
this.pageX = (isTouch ? event.changedTouches[0].pageX : e.pageX);
if(this.left < 0 && this.left > leftMax){
$(this).css({left:this.left});
} else if(this.left >= 0) {
$(this).css({left:'0'});
} else if(this.left <= leftMax) {
$(this).css({left:(leftMax)});
}
},'touchend mouseup mouseout': function(e){
if (!this.touched) {
return;
}
this.touched = false;
var $setThumbLiActive = $setThumbUl.children('li.active');
if(this.leftBegin > this.left && (!((this.leftBegin) === (leftMax)))){
$(this).stop().animate({left:((this.leftBegin)-(listWidth))},scrollSpeed);
$setThumbLiActive.each(function(){
$(this).removeClass('active');
$(this).next().addClass('active');
});
} else if(this.leftBegin < this.left && (!((this.leftBegin) === 0))) {
$(this).stop().animate({left:((this.leftBegin)+(listWidth))},scrollSpeed);
$setThumbLiActive.each(function(){
$(this).removeClass('active');
$(this).prev().addClass('active');
});
} else if(this.leftBegin === 0) {
$(this).css({left:'0'});
} else if(this.leftBegin <= leftMax) {
$(this).css({left:(leftMax)});
}
}
});
$setThumbLi.click(function(){
var connectCont = $setThumbLi.index(this);
$setMainUl.stop().animate({left:(-(listWidth)*(connectCont))},scrollSpeed);
$setThumbLi.removeClass('active');
$(this).addClass('active');
});
$setThumbLiFirst.addClass('active');
$setThumbLi.css({opacity:'0.5'});
var agent = navigator.userAgent;
if(!(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1 || agent.search(/Android/) != -1)){
$setThumbLi.hover(function(){
$(this).stop().animate({opacity:'1'},300);
},function(){
$(this).stop().animate({opacity:'0.5'},300);
});
}
});
</script>
<div align=center>
<div id="flickscroll">
<ul>
<li><img src="http://www.takahara-books.com/Image/Android/data_folder/device30.png" width=320 height=400></li>
<li><img src="http://www.takahara-books.com/Image/Android/data_folder/device100.png" width=320 height=400></li>
<li><img src="http://www.takahara-books.com/Image/Android/data_folder/device200.png" width=320 height=400></li>
</ul>
</div><!--/#flickscroll-->
<div id="flickthumb">
<ul>
<li><img src="http://www.takahara-books.com/Image/Android/data_folder/device30.png" width="50" height="50" alt="" /></li>
<li><img src="http://www.takahara-books.com/Image/Android/data_folder/device100.png" width="50" height="50" alt="" /></li>
<li><img src="http://www.takahara-books.com/Image/Android/data_folder/device200.png" width="50" height="50" alt="" /></li>
</ul>
</div><!--/#flickthumb-->
</div>
たぶん、アレンジすればもう少しいろいろ飾り付けもできるかと思います。
ぜひお試しください☆
参考サイト:jQueryでフリック/スワイプ動作の画像スライドギャラリーを作成する実験
0 件のコメント:
コメントを投稿