2

これでちょっと立ち往生。次の機能が必要な Shopify ショップの製品画像ギャラリーを構築しています。

  1. 各商品画像のサムネイル
  2. メイン画像「コンテナ」に入る中型画像
  3. 中サイズの画像をクリックするとライトボックスとして表示されるフルサイズの画像

したがって、サムネイルをクリックすると、中サイズの画像が画像コンテナーに読み込まれ、その中サイズの画像をクリックすると、フルサイズの画像がライトボックス オーバーレイとして表示されます。

ここに私のマークアップがあります:

<div id="imgcontainer">
                <a href="assets/product-fullsize.jpg" class="overlay"><img src="assets/product-main.jpg" alt="product-main" width="360" height="231" /></a>
            </div> <!-- End div#imgcontainer -->
            <div id="thumbs">
                <div class="thumbnav">
                    <ul>
                        <li><a href="assets/medium-1.jpg"><img src="assets/thumb-1.jpg" alt="thumb-1" width="100" height="70" /></a></li>
                        <li><a href="assets/medium-2.jpg"><img src="assets/thumb-2.jpg" alt="thumb-2" width="100" height="70" /></a></li>
                        <li><a href="assets/medium-3.jpg"><img src="assets/thumb-3.jpg" alt="thumb-3" width="100" height="70" /></a></li>
                        <li><a href="assets/medium-1.jpg"><img src="assets/thumb-1.jpg" alt="thumb-1" width="100" height="70" /></a></li>
                        <li><a href="assets/medium-2.jpg"><img src="assets/thumb-2.jpg" alt="thumb-2" width="100" height="70" /></a></li>
                        <li><a href="assets/medium-3.jpg"><img src="assets/thumb-3.jpg" alt="thumb-3" width="100" height="70" /></a></li>
                    </ul>
                </div> <!-- End div#thumbnav -->
                <a href="javascript:void(0);" class="tbpr">&nbsp;</a>
                <a href="javascript:void(0);" class="tbnx">&nbsp;</a>
            </div> <!-- End div#thumbs -->
        </div> <!-- End div#main -->

誰でもこれを行うための最良の方法をお勧めできますか? Shopify は「Liquid」と呼ばれる言語を使用しており、「foreach」ステートメントを使用して画像のマークアップを出力したり、3 種類の画像 URL (サムネイル、中サイズ、フルサイズ) だけを出力したりすることもできます。

画像のファイル名と場所はオンザフライで生成されるため、単純な命名規則はないことに注意してください。そのため、ファイル名の「中」部分を「フルサイズ」などに置き換えることはできません。

ご指摘ありがとうございます。

大須

4

2 に答える 2

1

フルサイズの URL をアンカーのデータ属性として保存できますか? 例えば、

<li><a href="assets/medium-1.jpg" data-fullsize="assets/fullsize-1.jpg">
       <img src="assets/thumb-1.jpg" alt="..." /></a></li>

次に、次のようなものを使用できます。

$('a[data-fullsize]').click( function() {
     var $this = $(this);
     $('#imgcontainer a:first').attr('href',$this.data('fullsize'))
                               .find('img')
                               .attr('src',$this.attr('href'));
     return false;
});
$('#imgcontainer').on('click','a:first',function() {
     // load href into lightbox
     return false;
});
于 2011-12-04T22:49:51.100 に答える
1

リンクへのパスをデータ属性として追加します。

大きな画像情報を追加する

<li><a href="assets/medium-1.jpg" data-zoomimage="assets/big-1.jpg"><img src="assets/thumb-1.jpg" alt="thumb-1" width="100" height="70" /></a></li>

クリックの処理( jQuery v1.7 )

まず親指 -> 中

$('.thumbnav').on('click','a',function(e){
    e.preventDefault();
    var self = $(this);
    $('#imgcontainer a') // find the link 
        .attr('href',self.data('zoomimage') ) // and update its href to point to the zoom
        .find('img') // fint the image inside
        .attr('src', self.attr('href') ); // and load the medium
});

次に中 -> ズーム

$('#imgcontainer').on('click','a',function(e){
    e.preventDefault();
    var self = $(this);
    // use lightbox system to load the link's href.. self.attr('href')
});
于 2011-12-04T22:51:44.220 に答える