在我正在开发的响应式网站上,我有自己的小灯箱脚本,它可以全屏打开图像,同时保持它们的纵横比。这很简单,使用 2 个 div(外部全屏 div 带有黑色背景“lbBlack”和内部 div 带有图像“lbImg”):
//super small lightbox ;)
$("#posts").on("click", ".img", function(event) {
$('#lbBlack').css('top',$(document).scrollTop());
$('#lbImg').attr('src', $(this).attr('src'));
$('#lbBlack').css('width',$(window).width());
$('#lbBlack').css('height',window.innerHeight);
$('#lbBlack').fadeIn(500);
$('#lbImg').css('margin-top',((window.innerHeight-$('#lbImg').height()))/2);
document.body.style.overflow="hidden";
document.ontouchmove = function(event){
event.preventDefault();
}
$('#lbBlack').on("click", "#lbImg, body", function(event) {
$('#lbBlack').fadeOut(500);
document.body.style.overflow="visible";
document.ontouchmove = function(event){
return true;
}
});
});
对于 iOS,我必须添加 ontouchmove-prevention,因为 body-overflow-hidden 不足以避免在打开灯箱时滚动。
现在上面这个工作解决方案的“大问题”:我想启用缩放图像。“ontouchmove”代码可以防止这种情况发生。
有任何想法吗?
HTML代码:
<body>
<div id="lbBlack">
<img id="lbImg">
</div>.....
CSS代码:
#lbBlack {
display: none;
position: absolute;
left: 0;
background-color: black;
z-index: 2001;
text-align: center;
}
#lbBlack #lbImg {
max-height: 100%;
max-width: 100%;
position: relative;
}
所以我认为我正在寻找的是一种防止滚动同时仍保持缩放可能性的方法。我仍然不明白为什么 body-overflow:hidden 仍然能够在 iOS 上滚动??