开发资源包在这里:
http://download.csdn.net/detail/snow_finland/8763729
其中有官网原始版本和楼主优化过的版本可选择(楼主优化的部分都用注释标出了)
官网地址:
http://be-fe.github.io/iSlider/
需要用到islider时,可以包含islider.js的文件,然后js中做如下调用:
var islider_tpl = '<div class="iSlider" id="J_islider">'+ '<div class="preview_toolbar preview_toolbar_top">'+ '<a id="J_close_preview" class="icons1 i_close"></a>'+ '<div class="user_info_box">'+ '<p class="creator"></p>'+ '<p class="time"></p>'+ '</div>'+ '</div>'+ '<div id="iSlider-wrapper" class="preview_wrap">'+ '</div>'+ '<p id="J_islider_loading_more" class="loading_more hide">正在加载更多...</p>'+ '</div>'; $("#J_file_list .item").die().live('click',function(){ var show_current = $(this).index(); var window_scroll_top = $(window).scrollTop(); $('body').append(islider_tpl); $('#J_file_list').hide(); islider = new iSlider({ type: 'pic', data: islider_array, // islider_array为arr形式,每一个arr中的obj包含需要用到的信息,比如fileid、content、creatorid、time等等 dom: document.getElementById("iSlider-wrapper"), isLooping: true, animateType: 'default', useZoom: true, initIndex: show_current }); var prevent_body_move = function(evt){ evt.preventDefault(); } var prevent_window = document.body; prevent_window.addEventListener('touchmove', prevent_body_move); $('#J_close_preview').die().live('touchstart',function(){ islider.destroy(); $('#J_islider').remove(); prevent_window.removeEventListener('touchmove', prevent_body_move); $('#J_file_list').show(); $(window).scrollTop(window_scroll_top); return false; }); });
由于代码都比较简单,并且资源包中的注释都非常详细,
这里就提一下开发中碰到过的几个重要的部分:
1、为了良好的用户体验,在出islider的图片预览浮层时,需要将所有body上别的元素隐藏,并且滚轴移动到左上角的地方,屏蔽body的默认move事件,确保屏幕中只有左右滑动,长按保存图片和关闭浮层这几个操作
2、官网中屏幕旋转的事件是监听在元素上的,但是android手机只有window上才能监听到这个事件,ios可以监听在元素上,所以这个部分需要改为监听在window上,以便兼容
3、允许瀑布流方式的加载更多的图片(在预览时),当图片是倒数三张的时候加载更多批次;当正在加载后一批并且这时已经是当前批次的最后一张图时,不允许左右滑动切换图片,并且给出正在加载的提示
4、修复官网代码中,只有一张图片时的加载和左右滑动的事件错误
5、重设了最大和最小的缩放尺寸(官网版本只有最小缩放尺寸)
PS:这是楼主目前用下来最好用的图片预览插件,没有之一,可控性比较强,而且代码比较简短,比较清晰,容易根据个人需要进行改动和添加,并且没有屏蔽浏览器原生的长按保存图片的功能