2013-02-11 67 views
1

我使用的是Fancybox JQuery插件,但由于我的htmlbody CSS属性而遇到问题。目前,overflow-y属性设置为scroll,试图隐藏调整页面长度的紧张动画。使用BeforeShow/BeforeClose隐藏FancyBox中的第二个滚动条

由于Fancybox正在调用第二个HTML元素(我认为),当调用第二个滚动条时会出现第二个滚动条,这又会导致一个动作或动画效果。

我试图使用Fancybox的beforeShowbeforeClose回调来解决这个问题,它似乎在某些方面是有效的。

beforeShow回调无缝工作,因为当调用Fancybox时,不会出现第二个滚动条。但是,beforeClose回调函数确实返回原始滚动属性,但会出现一个小的“点”,导致屏幕抖动,并且所有身体元素都会调整大小/重新塑形,就好像有一秒钟滚动条开始。

我不知道为什么会发生这种情况,因为技术上没有第二个滚动条,但关闭Fancybox的行为就好像有。是否有我可以修改的CSS规则,或者不同的回调来防止这种情况?

我的fancybox脚本:

jQuery('.fancyboox').fancybox({ 
      fitToView : false, 
      width  : '90%', 
      height  : '90%', 
      autoSize : false, 
      closeClick : false, 
      openEffect : 'none', 
      closeEffect : 'none', 
      beforeShow : function() { 
       $('body, html').css('overflowY','hidden'); 
      }, 
      afterClose : function() { 
       $('body, html').css('overflowY','auto'); 
      } 
     }); 

仿效同样的效果的演示 - http://jsfiddle.net/NVHWw/ - 如果你会发现,第二滚动条出现,然后在关闭灯箱很快消失。

非常感谢,SO。非常感激。

回答

4

只需添加helpers API选项来禁用overlay锁,如:

helpers: { 
    overlay: { 
     locked: false 
    } 
} 

...没有必要的beforeShow和/或afterClose回调。

JSFIDDLE

+0

真棒响应。感谢您的输入! – RCNeil 2013-02-12 15:11:59