モバイル サイトのユーザーがアイコンのリストをスワイプ/スクロールできるようにしたいと考えています。
アイコンは、div
タグを含むimg
タグです。
ユーザーはコンテナをスワイプして、要素を左右にスクロール/スライドできる必要があります。
画像は加速と減速で滑らかにスライドする必要があります。
iOS と Android で動作する必要があります。
いつかこのようなものが必要だったので、その時にデモを作りました。それはかなり基本的なものですが、必要なすべての基礎作業を積み上げます. まず、マークアップから始めましょう:
質問のタグ セクションで jQM について言及したので、jQM[data-role=page]
マークアップを使用します。次のような構造になります。
<div data-role="page">
<div data-role="header" data-theme="b">
<h1>Slideshow</h1>
</div>
<div data-role="content">
<div class="images">
<!--your images here -->
</div>
</div>
</div>
したがって、すべての画像を div に入れますclass=images
。a
画像の特定のグループは、次のようなタグ内にカプセル化されました。
<a href="#">
<img src="25AC.jpg" />
</a>
<a href="#">
<img src="nature.jpg" />
</a>
<!--so on-->
これを の中に入れdiv.images
ます。これが、私たちが持っているマークアップについてです。
スタイルシート部分はシンプルです。
.images {
height : 280px;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
background-color : #272722;
}
.images a{
padding : 14px 5px 0px 5px;
margin: 5px 3px 0px 3px;
vertical-align: middle;
display: inline-block;
}
images img {
max-width: 100%;
max-height:512px;
}
ここで注意すべき重要なプロパティ:
overflow-x
をoverflow-y
有効にし、後者を無効にする必要があります。そうして初めて、右または左にスワイプしたときにスクロールが発生します。white-space
プロパティ: これは、画像をまっすぐな水平レイアウトにするために重要です。max-width
プロパティ: これは、モバイルで画像をスケーリングするためのものです。それでおしまい!これで完了です。
イベント処理を実演できるように、タップ時に画像を表示するポップアップを追加しました。ポップアップは次のとおりです。
<div data-role="popup" id="popupInfo" data-overlay-theme="a" data-theme="b" data-corners="false">
<a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
<div id="stuff"></div>
</div>
周囲をクリックすると、画像が中div#stuff
に入れられます。JS は次のとおりです。a
img
//pageinit event of page
$(document).on("pageinit", "[data-role=page]", function() {
//cache popup for future use
var $popup = $("#popupInfo");
//click event for "a" tag inside .images
$(this).on("click", ".images > a[href=#]", function(e) {
//prevent default action
e.preventDefault();
//clone the image inside "a"
var $img = $(this).find("img").clone();
//add the cloned image inside #stuff
$popup.find("#stuff").html($img);
//open popup()
$popup.popup().popup("open");
});
});
はるかに洗練された機能を提供する jQuery プラグインである swipejs を試すことができます。サイトへのリンクはこちらです。