fancyBox v2:如何防止Chrome中的背景滚动
fancyBox v2: How do I prevent background scrolling in Chrome?
我使用的是fancyBox v2.1.4。在Chrome中,当fancyBox打开时,它允许滚动主页。
我正在使用locked: true
,但这似乎并不能解决问题。我还考虑过使用e.preventDefault
禁用某些滚动功能作为另一个选项:
$(document).ready(function() {
$('.fancybox').fancybox({
'closeClick': false,
'scrolling': 'no',
helpers: {
overlay: {
closeClick: false,
locked: true
}
},
beforeShow: function() {
// considering some type of functionality here to prevent default
// of mousewheel
},
afterClose: function() {
// restore default action of mousewheel, although my initial attempts
// at this did not work
}
});
});
这段代码对我有用:
<script type="text/javascript">
$(document).ready(function() {
$(".lightbox").fancybox({
scrolling: "no",
openEffect: "elastic",
padding: 0,
closeEffect: "elastic",
afterShow: function(){
document.ontouchstart = function(e){
//prevent scrolling
e.preventDefault();
}
},
afterClose: function(){
document.ontouchstart = function(e){
//default scroll behaviour
}
},
helpers: {
overlay: {
locked: true
}
}
});
});
</script>
我有一个可能的解决方案来解决你(也是我)的问题。在此之前,我可以在默认浏览器中滚动Android设备上fancyBox后面的页面。有了这个小"黑客",用户就不能再滚动背景页了,但由于浏览器捕捉"滚动"事件的速度太快,这有点小故障。
更新:在计算机浏览器上,此修复程序非常有效。只有安卓浏览器出现故障。
jQuery(document).ready(function($) {
var scrolltop, htmlOrBody;
var antiscrollevent = function(e) {
e.preventDefault();
$(htmlOrBody).scrollTop(scrolltop);
};
// links met een popover
$("a.popup").fancybox({
type: 'ajax',
beforeShow: function() {
// considering some type of functionality here to prevent default of
// mousewheel
htmlOrBody = $('body').scrollTop() != 0 ? 'body' : 'html';
scrolltop = $(htmlOrBody).scrollTop();
$(window).on('scroll', antiscrollevent);
},
afterClose: function() {
// restore default action of mousewheel, although my initial attempts
// at this did not work
$(window).off('scroll', antiscrollevent);
}
});
});
非常适合我:
$('.image').fancybox({
helpers: {
overlay: {
locked: false
}
}
});
此代码在Chrome(Windows版本29.0.1547.57 m)中运行良好
$(document).ready(function () {
$('.fancybox').fancybox({
closeClick: false,
scrolling: 'no',
helpers: {
overlay: {
closeClick: false //,
// locked: true // default behavior
}
}
});
});
请参阅JSFIDDLE(在Chrome中)
我尝试的许多事情最终都禁用了移动设备上的所有交互,使FancyBox无法关闭。
我最终在afterShow
上覆盖了jQuery的scroll
事件。这保留了与FancyBox内容的交互,同时禁用了正文的滚动。在Android浏览器和移动Safari:上测试
afterShow: function(){
$(document).on('scroll','body',function(e){
e.preventDefault();
});
}
通过在没有e.preventDefault();
的情况下重复scroll
功能,在afterClose
上重置此值
您可以使用scrollOutside
设置:
.fancybox({
scrolling: "no",
scrollOutside: "false"
});
CCD_ 9设置防止垂直滚动条显示。
相关文章:
- 修复弹出框并使背景滚动
- 背景滚动,内容上下匹配
- 如何在移动设备中查看模式框时停止背景滚动,只需使用CSS或Javascript
- 使用 javascript 暂停背景滚动以允许固定元素进行幻灯片放映
- 如何在激活灯箱插件时禁用鼠标滚轮的背景滚动
- 背景滚动布局
- 如何实现此背景滚动效果
- HTML 背景滚动效果
- fancyBox v2:如何防止Chrome中的背景滚动
- Bootstrap 3 Modal内置texarea.当点击/聚焦文本区域时,背景滚动到顶部.仅适用于iOS 8
- 引导模式背景滚动问题
- 背景滚动与开放模式
- 视差背景滚动方程-包括示例
- 当模式打开时保持背景滚动
- 动态背景滚动
- 固定背景滚动效果相对于背景的单独元素
- 如何防止背景滚动时,引导模式打开后,它应该来到正常的位置
- 禁用背景滚动
- 关于如何在各个方向完成背景滚动的建议
- 缓存其他页面的背景滚动图像位置