![](https://i-blog.csdnimg.cn/blog_migrate/61e5e9598a397fb8ea66cd6a638372b0.gif)
https://pan.baidu.com/s/1_BCUSss8_3i3yiSATyc89w 提取码: h436
图片404处理
// touchTouch.jquery.js loadImage(src, callback){} 函数内部
// 添加错误图片处理
var img = $('<img>')
img.on('load', function(){
callback.call(img);
});
var stu = true
img.on("error", function () {
if(!stu){
callback.call($("<span>").text("图片找不到了"))
}else{
$(this).attr("src", "./img/error.png"); //备用错误图片
stu = false
}
})
img.attr('src',src);
*{ touch-action: none; }
解决这个错误
代码示例
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
<title>测试</title>
<link rel="stylesheet" type="text/css" href="touchTouch/touchTouch/touchTouch.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="touchTouch/touchTouch/touchTouch.jquery.js" ></script>
<style>
*{ touch-action: none; }
.img-container{
overflow: hidden;
}
.img-container a{
float: left;
width: 100px;
height: 200px;
overflow: hidden;
background-size: 100% 100%;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div class="img-container" id="thumbs">
<a href="./img/01.png" style="background-image: url(./img/01.png);"></a>
<a href="./img/02.png" style="background-image: url(./img/02.png);"></a>
<a href="./img/03.png" style="background-image: url(./img/03.png);"></a>
</div>
<div class="img-container" id="thumbs2">
<a href="./img/01.png" style="background-image: url(./img/01.png);"></a>
<a href="./img/02.png" style="background-image: url(./img/02.png);"></a>
<a href="./img/03.png" style="background-image: url(./img/03.png);"></a>
</div>
<script>
$(function(){
$('#thumbs a').touchTouch();
$('#thumbs2 a').touchTouch();
})
</script>
</body>
</html>
App放大缩小处理 pinchzoom.js
https://github.com/manuelstofer/pinchzoom/blob/master/src/pinch-zoom.js
或
https://download.csdn.net/download/weixin_42448623/12024185
单独使用示例
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>图片缩放</title>
<style>
.pinch-zoom,.pinch-zoom img{
width: 100%;
-webkit-user-drag: none;
-moz-user-drag: none;
-ms-user-drag: none;
user-drag: none;
}
</style>
</head>
<body>
<div class="page" style="display:block">
<div class="pinch-zoom">
<img src="../img/01.png"/>
</div>
</div>
<!-- <script src="js/jquery-1.7.2.min.js"></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="./pinchzoom.js"></script>
<script type="text/javascript">
$(function () {
$('div.pinch-zoom').each(function () {
new RTP.PinchZoom($(this), {});
});
})
</script>
</body>
</html>
配合使用
修改 touchTouch.jquery.js
items.on('click', function(e){
......
// 最后
$('.placeholder').each(function () {
new RTP.PinchZoom($(this), {});
});
}
代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
<title>测试</title>
<link rel="stylesheet" type="text/css" href="touchTouch/touchTouch/touchTouch.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- <script src="https://hammerjs.github.io/dist/hammer.js"></script> -->
<script src="./pinchzoom.js"></script>
<script type="text/javascript" src="touchTouch/touchTouch/touchTouch.jquery.js" ></script>
<style>
*{ touch-action: none; }
.img-container{
overflow: hidden;
}
.img-container a,.img-container img{
float: left;
width: 100px;
height: 200px;
overflow: hidden;
background-size: 100% 100%;
background-repeat: no-repeat;
}
.pinch-zoom-container{
width:100%;
height:100%;
display: inline-block;
}
</style>
</head>
<body>
<div class="img-container" id="thumbs">
<a href="./img/01.png" style="background-image: url(./img/01.png);">3</a>
<a href="./img/02.png" style="background-image: url(./img/02.png);">3</a>
<a href="./img/03.png" style="background-image: url(./img/03.png);">3</a>
</div>
<script>
$(function(){
$('#thumbs a').touchTouch();
})
</script>
</body>
</html>
一个页面多处使用 互不影响
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
<link rel="stylesheet" type="text/css" href="touchTouch/touchTouch/touchTouch.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="pinchzoom.js" ></script>
<script type="text/javascript" src="touch.js" ></script>
<title>测试</title>
<style>
.img-container{
overflow: hidden;
}
.img-container img{
float: left;
width: 200px;
height: 200px;
overflow: hidden;
background-size: 100% 100%;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div class="img-container" id="thumbs">
<img data-index="0" href="http://pic.netbian.com/uploads/allimg/181116/174424-15423614646d06.jpg" >
<img data-index="1" href="http://pic.netbian.com/uploads/allimg/181115/114126-154225328668ce.jpg">
<img data-index="2"href="http://pic.netbian.com/uploads/allimg/181101/195002-1541073002d4f0.jpg" >
</div>
<div class="img-container" id="thumbs3">
<img data-index="0" href="http://pic.netbian.com/uploads/allimg/181115/114126-154225328668ce.jpg" >
<img data-index="1" href="http://pic.netbian.com/uploads/allimg/181101/195002-1541073002d4f0.jpg" >
<img data-index="2" href="http://pic.netbian.com/uploads/allimg/181116/174424-15423614646d06.jpg" >
</div>
<script>
$(document).ready(function(){
var imrArr = [
"http://pic.netbian.com/uploads/allimg/181116/174424-15423614646d06.jpg",
"http://pic.netbian.com/uploads/allimg/181115/114126-154225328668ce.jpg",
"http://pic.netbian.com/uploads/allimg/181101/195002-1541073002d4f0.jpg"
]
var imrArr2 = [
"http://pic.netbian.com/uploads/allimg/181115/114126-154225328668ce.jpg",
"http://pic.netbian.com/uploads/allimg/181101/195002-1541073002d4f0.jpg",
"http://pic.netbian.com/uploads/allimg/181116/174424-15423614646d06.jpg"
]
$("#thumbs img").touchTouch(imrArr)
$("#thumbs3 img").touchTouch(imrArr2)
})
</script>
</body>
</html>
(function(){
var touchArr = []
$.fn.touchTouch = function(imgurl){
function Touch(imgParent,items,imgurl){
this.parent = imgParent;
this.placeholders = $([]);
this.index = 0;
this.zooms = [];
this.items = items;
this.imgurl = imgurl
}
Touch.prototype.init = function(){
this.created();
// 将标记附加到页面
this.overlay.hide().appendTo(this.parent)
this.closeBtn.appendTo(this.overlay);
this.slider.appendTo(this.overlay,this.closeBtn);
this.overlay.append(this.prevArrow).append(this.nextArrow);
var _this = this;
// 为每个图像创建占位符
this.items.each(function(){
_this.placeholders = _this.placeholders.add($('<div class="placeholder">'));
});
this.slider.append(this.placeholders);
this.event()
}
Touch.prototype.created = function(){
this.overlay = $('<div class="galleryOverlay">');
this.slider = $('<div class="gallerySlider">');
this.prevArrow = $('<a class="prevArrow"></a>');
this.nextArrow = $('<a class="nextArrow"></a>');
this.closeBtn = $('<span class="closeBtn"></span>');
this.overlayVisible = false;
}
Touch.prototype.hideOverlay = function(){
window.localStorage.setItem("windowReceiverAPP_img", "")
if(!this.overlayVisible){
return false;
}
this.overlay.hide().removeClass('visible');
this.overlayVisible = false;
}
Touch.prototype.showOverlay = function(){
window.localStorage.setItem("windowReceiverAPP_img", "1")
var _this = this;
if (this.overlayVisible){
return false;
}
this.overlay.show();
setTimeout(function(){
_this.overlay.addClass('visible');
}, 100);
this.offsetSlider(this.index);
this.overlayVisible = true;
}
Touch.prototype.event = function(){
var _this = this;
this.closeBtn.click(function(e){
if(!$(e.target).is('img')){
_this.hideOverlay();
}
})
this.overlay.on('touchstart', '.gallerySlider .placeholder', function(e){
var touch = e.originalEvent,
startX = touch.changedTouches[0].pageX;
_this.slider.on('touchmove',function(e){
e.preventDefault();
touch = e.originalEvent.touches[0] ||
e.originalEvent.changedTouches[0];
// 左滑动
if(touch.pageX - startX > 10){
_this.slider.off('touchmove');
_this.showPrevious();
}
// 右滑动
else if (touch.pageX - startX < -10){
_this.slider.off('touchmove');
_this.showNext();
}
});
return false;
}).on('touchend',function(){
_this.slider.off('touchmove');
});
this.items.on('click', function(e){
e.preventDefault();
_this.index = parseInt($(this).attr("data-index"))//items.index(this);
console.log("index:",_this.index)
_this.showOverlay(_this.index);
_this.showImage(_this.index);
// 预加载之后
_this.preload(_this.index+1);
// 预加载之前
_this.preload(_this.index-1);
// $('.placeholder').each(function () {
// new RTP.PinchZoom($(this), {});
// // var zoom = new pinchzoom($(this), {
// // tapZoomFactor:1, //双击放大倍数 默认2
// // })
// // zooms.push(zoom)
// //zoom.zoomOutAnimation() //缩放到原来的位置
// });
});
this.prevArrow.click(function(e){
e.preventDefault();
_this.showPrevious();
});
this.nextArrow.click(function(e){
e.preventDefault();
_this.showNext();
});
}
Touch.prototype.offsetSlider = function(index){
this.slider.css('left',(-index*100)+'%');
}
Touch.prototype.showImage = function(index){
if(index < 0 || index >= this.items.length){
return false;
}
var _this = this;
this.loadImage(this.imgurl[index], function(){
_this.placeholders.eq(index).html(this);
});
}
Touch.prototype.loadImage = function(src, callback){
var img = $('<img>')
img.on('load', function(){
callback.call(img);
});
var stu = true
img.on("error", function () {
if(!stu){
var span = $("<span>").text("图片找不到了").css("color","white")
callback.call(span)
}else{
$(this).attr("src", "./img/01.png"); //备用错误图片
}
})
img.attr('src',src);
}
Touch.prototype.preload = function(index){
var _this = this;
setTimeout(function(){
_this.showImage(index);
}, 1000);
}
Touch.prototype.showNext = function(index){
var _this = this;
if(this.index+1 < this.imgurl.length){
this.index++;
this.offsetSlider(this.index);
this.preload(this.index+1);
}
else{
this.slider.addClass('rightSpring');
setTimeout(function(){
_this.slider.removeClass('rightSpring');
},500);
}
}
Touch.prototype.showPrevious = function(index){
var _this = this;
if(this.index>0){
this.index--;
this.offsetSlider(this.index);
this.preload(this.index-1);
}
else{
this.slider.addClass('leftSpring');
setTimeout(function(){
_this.slider.removeClass('leftSpring');
},500);
}
}
Touch.prototype.closeBtnClick = function(){
this.closeBtn.click()
}
Touch.prototype.close = function(){
this.overlay.remove()
$(window).unbind("PAGE_PAGE_APP_IMG_TOUCH")
}
var Touch = new Touch($(this).parent(),this,imgurl)
Touch.init()
touchArr.push(Touch)
// 返回关闭图片预览
$(window).on("APP_IMG_TOUCH",function(){
console.log("返回关闭图片预览")
closeTouch()
})
// 页面离开
$(window).on("PAGE_APP_IMG_TOUCH",function(){
console.log("页面离开 清理图片预览")
removeTouch()
})
// 离开
function removeTouch(){
for(var i = 0; i < touchArr.length; i++){
touchArr[i].closeBtnClick()
touchArr[i].close()
}
}
// 关闭
function closeTouch(){
for(var i = 0; i < touchArr.length; i++){
touchArr[i].closeBtnClick()
}
}
};
})(jQuery);