1

我正在使用prettyPhoto来显示从 Flickr 获得的图像。它在桌面和 iPad 上运行良好。对于 iPad,我想添加滑动手势来切换图像。所以我试图添加TouchSwipe

这是我设置我的漂亮照片的方法。注意回调。

function setupBox() {
    $("a[rel^='prettyPhoto[gallery1]']").prettyPhoto({
        slideshow: 5000,
        social_tools: '',
        animation_speed:'normal',
        theme:'facebook',
        changepicturecallback: function() {
            setupSwipe();
        }
    });
}

这是回调函数。'#fullResImg' 是图像的选择器。

function setupSwipe() {
    $('#fullResImg').swipe({
        swipe:function(event, direction, distance, duration, fingerCount) {
            if( direction == 'left' ) {
                $.prettyPhoto.changePage('next');
            }else if ( direction == 'right' ) {
                $.prettyPhoto.changePage('previous');
            }
        },
        allowPageScroll: "none",
    });
}

正确调用了所有函数,但未检测到滑动。如果我将选择器更改为“.pp_content”,我可以在框的底部滑动,但也不能在图像本身上滑动。

我怀疑它与盒子的堆叠有关,但我尝试了其他几个选择器,它们对实际的 Image 不起作用。

我将在此处包含 pP 框的标记:

<div class="pp_pic_holder facebook" style="top: 90.5px; left: 80px; display: block; width: 816px;">
   <div class="ppt" style="opacity: 1; display: block; width: 776px;">LN-RKI</div>
   <div class="pp_top">
    <div class="pp_left"></div>
    <div class="pp_middle"></div>
    <div class="pp_right"></div>
   </div>
   <div class="pp_content_container">
    <div class="pp_left">
    <div class="pp_right">
     <div class="pp_content" style="height: 552px; width: 776px;">
      <div class="pp_loaderIcon" style="display: none;"></div>
      <div class="pp_fade" style="display: block;">
       <a href="#" class="pp_expand" title="Expand the image" style="display: inline;">Expand</a>
       <div class="pp_hoverContainer" style="height: 516px; width: 776px;">
        <a class="pp_next" href="#">next</a>
        <a class="pp_previous" href="#">previous</a>
       </div>
       <div id="pp_full_res"><img id="fullResImage" src="http://farm9.static.flickr.com/8489/8265747809_d0fca2a7c9_b.jpg" style="height: 516px; width: 776px;"></div>
       <div class="pp_details" style="width: 776px;">
        <div class="pp_nav" style=""><a href="#" class="pp_play">Play</a>
         <a href="#" class="pp_arrow_previous">Previous</a>
         <p class="currentTextHolder">1/50</p>
         <a href="#" class="pp_arrow_next">Next</a>
        </div>
        <p class="pp_description" style="display: none;"></p>
        <div class="pp_social"></div>
        <a class="pp_close" href="#">Close</a>
       </div>
      </div>
     </div>
    </div>
    </div>
   </div>
   <div class="pp_bottom">
    <div class="pp_left"></div>
    <div class="pp_middle"></div>
    <div class="pp_right"></div>
   </div>
  </div>
 <div class="pp_overlay" style="opacity: 0.8; height: 954px; width: 959px; display: block;"></div>

那么,这里有没有人知道如何使用 TouchSwipe 在 prettyPhoto 上滑动图像?

提前致谢!

4

3 回答 3

1

好的,我找到了解决方法。恕我直言,不是很干净,但对于这个网站来说已经足够了。

我在 changepicturecallback 中添加了以下代码:

if( document.width <= 1024 )
{
    $('.pp_hoverContainer').remove();
}

当文档宽度 <= 1024 时,这完全会删除导航覆盖。这适用于 Android Chrome、iOS Chrome、iOS Safari。

我需要补充一点,我在“#pp_full_res”上设置了滑动。不像我的问题。

所以是的,这是一个堆叠问题。请注意,触发 .pp_hoverContainer 上的滑动也不起作用。不错的副作用:滑动模式下没有导航箭头 :)

于 2012-12-14T19:16:48.463 回答
1

我使用上面的答案来实现相同的功能,但使用TouchWipe并发现您可以像这样将滑动操作添加到该元素,而不是删除“.pp_hoverContainer”:

    $(document).ready(function(){
        function setupBox() {
           $("a[rel^='prettyPhoto']").prettyPhoto({
                social_tools: false,
                theme:'dark_rounded',
                changepicturecallback: function() {
                    setupSwipe();
                }
           });
        }
        function setupSwipe() {
           $(".pp_hoverContainer").touchwipe({
            wipeLeft: function() { 
                $.prettyPhoto.changePage('next');
            },  
            wipeRight: function() { 
               $.prettyPhoto.changePage('previous');
        },
           min_move_x: 20,
           min_move_y: 20,
           preventDefaultEvents: true
       });
   }
   setupBox();
   });
于 2013-01-18T20:28:32.497 回答
0

我使用了您的代码,仅将“#fullResImg”选择器更改为“.pp_hoverContainer”,然后滑动对我有用。

于 2018-12-18T11:22:39.730 回答