核心提示:需求:点击文章中图片会弹出一层,在这层中图片可以缩放(双击缩放,手势缩放,滑动切换图片,swiper可以做到这些功能),类似微信的预览图片功能。实现:1、首次点击某张图片,动态加载swiper的js文...
需求:
点击文章中图片会弹出一层,在这层中图片可以缩放(双击缩放,手势缩放,滑动切换图片,swiper可以做到这些功能),类似微信的预览图片功能。
实现:
1、首次点击某张图片,动态加载swiper的js文件,动态插入swiper结构,初始化swiper,并展示被点击的图片。
2、第二次点击或第三次点击之后直接显示被点击的图片。
代码如下:
<!--dom结构,基本适用于富文本-->
<p id="article">
...
<img src=""/>
...
</p>
<!--引入jquery-->
<link rel="stylesheet" type="text/css" href="/css/swiper.css"><!--先引入css,试过使用js引入是不行滴-->
<style>
.swiper-container {position: fixed;top:0;background: #000;width: 100%;height: 100%;}
</style>
<script type="text/javascript">
var is_load_js = true;var swiper = {};
$("#article img").click(
function(){
var img_index = $("#article img").index(this);//点击了第几张图
//首次点击引入js,向文档添加元素并初始化swiper
if(is_load_js){
var swiper_slider = '';
$.getScript("/js/swiper.js",function(){ //加载swiper.js,成功后,并执行回调函数
var swiper_container = $('<p class="swiper-container "></p>');
var swiper_wrapper = $('<p class="swiper-wrapper"></p>');
var swiper_icon = '<p class="swiper-pagination swiper-pagination-white"></p>';
$("#article img").each(function(){
swiper_slider += '<p class="swiper-slide"><p class="swiper-zoom-container"><img src="'+$(this).attr("original")+'"></p></p>';//由于使用了lazyload,真正的src在original里
});
var btn = $('<p id="closs-btn" style="padding:10px;background: red;position:absolute;top:10px;right:10px;z-index:9999;color:#fff;text-align: center;line-height:12px;" onClick="$(\'.swiper-container\').hide();">×</p>');//设置关闭按钮,并绑定事件
swiper_wrapper.append(swiper_slider);
swiper_container.append(swiper_wrapper);
swiper_container.append(swiper_icon);
swiper_container.append(btn);
$("body").append(swiper_container);
swiper = new Swiper('.swiper-container', {
zoom: true,
initialSlide:img_index,//初始显示第几张
pagination: {
el: '.swiper-pagination',
},
});
});
is_load_js = false;//表示已经初始化了swiper
}else{
swiper.zoom.out(); //清除上一次放大
swiper.slideTo(img_index,0.1,false);//点击第几张显示第几张
$('.swiper-container').show();
}
}
);
</script>
效果:

总结:
暂时并不能想微信那样,单击一下就退回原界面。
swiper还是比较强大的,有各种效果,还可以拿来做布局。


