这是一个已知问题,您可以在此处了解更多信息:issues、fancyapps @ GitHub
我正在使用 fancybox2(版本 2.1.5)。我通过稍微修改“jquery.fancybox.css”文件解决了这个问题:
找到“覆盖助手”部分(从第 165 行开始)并更改两个规则:
.fancybox-lock {
/* overflow: hidden !important;*/
overflow-x: hidden !important;
overflow-y: scroll !important;
width: auto;
}
第二条规则:
.fancybox-lock .fancybox-overlay {
/* overflow: auto;
overflow-y: scroll;*/
overflow: hidden !important;
}
这工作得很好(恕我直言),尽管页面在覆盖层后面是可滚动的。
至少抑制了令人不安的“右移”效应。
后来我发现用“right: 0;”定位的元素 向左移动了垂直滚动条的宽度。
这是因为由 fancybox.js-code 通过在 head-element 内附加一个 style-node 来设置 margin-right。
要解决此问题,只需修改 jquery.fancybox.js 文件或 jquery.fancybox-2.1.5-pack.js 文件中的一行代码,具体取决于您使用的是哪一个。
在解压版本的 2017 行中:
$("<style type='text/css'>.fancybox-margin{margin-right:" + (w2 - w1) + "px;}</style>").appendTo("head");
// change it to
$("<style type='text/css'>.fancybox-margin{margin-right: 0;}</style>").appendTo("head");
// perhaps comment out the complete line, I haven't testet it though
或在 .pack 文件中(EOL 附近的第 46 行):
/* [much more code before] */ f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
// change it to:
/* [much more code before] */ f("<style type='text/css'>.fancybox-margin{margin-right:0;}</style>").appendTo("head")})})(window,document,jQuery);
// or try to remove the "f().appendTo()"-part completely (untested)