Jquery Fancybox移除滚动条,移动页面
当我点击一个加载Fancybox的链接时,整个背景页面移到右边的DotoFancy框,移除滚动条。我尝试过在其他论坛中添加这个JS,但没有成功。下面有一个链接(单击品牌标题),不确定为什么会删除滚动条 我像这样加载对象Jquery Fancybox移除滚动条,移动页面,jquery,css,fancybox,Jquery,Css,Fancybox,当我点击一个加载Fancybox的链接时,整个背景页面移到右边的DotoFancy框,移除滚动条。我尝试过在其他论坛中添加这个JS,但没有成功。下面有一个链接(单击品牌标题),不确定为什么会删除滚动条 我像这样加载对象 <div class="fancybox-hidden" style="display:none;"> <div id="post-<?php the_ID(); ?>" class="brand_
<div class="fancybox-hidden" style="display:none;">
<div id="post-<?php the_ID(); ?>" class="brand_list" style="width:800px !important;">
<h2>The Beers</h2>
<div class="beers">
<?php the_content(); ?>
<div class="clear"></div>
</div>
</div>
</div>
正在删除滚动条,因为jquery.fancybox.pack.js正在添加属性overflow:hidden每当显示fancybox时,通过类.fancybox lock
将代码>发送到
元素。有几种方法可以处理这个问题
1) 修改jquery.fancybox.pack.js中的javascript,以在显示fancybox时不将此类添加到body元素。
2) 修改jquery.fancybox.css(第169行)中的css,以不添加溢出:隐藏.fancybox锁
选择器的code>属性。
3) 在您自己的css文件中,以及!重要信息
声明主体上的溢出属性以覆盖fancybox css(即主体{overflow:auto!important;}
)。
4) 添加溢出:自动
作为直接位于
标记上的内联样式。正如BigMacAttack所述,问题在于溢出:隐藏的样式添加到
元素。这将从正文中删除滚动条并防止滚动
但是,接受溢出:隐藏的解决方案是使用额外的填充来补偿额外的正文宽度(由于滚动条丢失)。只需在打开覆盖层之前保存身体宽度,并在需要时添加额外的填充
// before opening
var originalWidth = $('body').width();
// when open
if ($('body').width() > originalWidth) {
$('body').css("padding-right", ($('body').width() - originalWidth) +"px");
}
// after closing
$('body').css("padding-right", "");
我也有同样的问题。
以下是您需要做的:
1) 使用此选项启动Fancybox:
helpers:{overlay: {css: {'overflow': hidden}}}
2) 在fancybox css之后执行的任何css文件中添加此行
html.fancybox-lock {overflow-y: scroll !important}
这将使Fancybox在不移动整个网站的情况下打开和关闭,不会影响html或正文标记的溢出(当html标记中存在Fancybox lock类时,它仅设置'overflow-y:scroll')适用于将iframe与Fancybox一起使用的用户,这会将滚动条放回主页上
if ($( "body", window.parent.document ).hasClass( "compensate-for-scrollbar" ) ) {
$( "body", window.parent.document ).removeClass( "compensate-for-scrollbar" );
}
似乎不能再制造问题了。你有一个活生生的例子吗?@chrisarton ya很抱歉,这个链接一开始不起作用。看看我帖子上的“问题”,它似乎没有为我删除滚动条,你使用的是什么浏览器?你在所有浏览器上都有同样的问题吗?@chrisarton我真的试过Chrome/Safari/Moz,但它对我不起作用
if ($( "body", window.parent.document ).hasClass( "compensate-for-scrollbar" ) ) {
$( "body", window.parent.document ).removeClass( "compensate-for-scrollbar" );
}