在我正在開發的響應網站上,我擁有自己的小燈箱腳本,可在保持寬高比的同時以全屏方式打開圖像。這很簡單,使用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