在我正在开发的响应网站上,我拥有自己的小灯箱脚本,可在保持宽高比的同时以全屏方式打开图像。这很简单,使用2周的div(外全屏-DIV黑色背景“lbBlack”与图像“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预防,因为身体 - 溢出隐藏不足以避免在打开灯箱时滚动。
上面这个工作解决方案的“大问题”:我想启用图像放大。这是通过“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;
}
所以我觉得我所寻找的是防止滚动,同时仍保持放大的可能性的方法。我仍然没有得到它为什么身体溢出:隐藏仍然有能力在iOS上滚动??
您是否尝试设置overflow-x和overflow-y而不是溢出?或者,也许在#lbBlack div本身而不是body上设置overflow-x,overflow-y或overflow属性。 – orb
刚刚尝试过,也不管用... –
gimmie一秒我发誓我已经通过这之前。让我在jsFiddle上捣鼓一分钟。你可以请发布相关的HTML和CSS? – orb