首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >fancybox2 / fancybox导致页面跳到顶部

fancybox2 / fancybox导致页面跳到顶部
EN

Stack Overflow用户
提问于 2012-11-25 08:13:06
回答 11查看 82.4K关注 0票数 107

我在一个开发站点上实现了fancybox2。

当我使用fancybox (点击链接等)时,整个html都会移到它后面--并转到顶部。我让它在另一个演示中工作得很好,但是当我将相同的代码拖到这个项目中时,它会跳到顶部。不仅包含内联div的链接,还包含简单图片库的链接。

有没有人经历过这种情况?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-03-09 11:37:39

这实际上可以通过Fancybox 2中的助手来完成。

代码语言:javascript
复制
$('.image').fancybox({
  helpers: {
    overlay: {
      locked: false
    }
  }
});

http://davekiss.com/prevent-fancybox-from-jumping-to-the-top-of-the-page/

票数 336
EN

Stack Overflow用户

发布于 2013-07-04 05:10:23

Jordanj77是正确的,但最简单的解决方案是转到stylesheet jquery.fancybox.css并注释掉.fancybox-lock部分中的overflow: hidden !important;

票数 35
EN

Stack Overflow用户

发布于 2014-01-26 03:24:59

我知道这是一个古老的问题,但我想我已经找到了一个很好的解决方案。问题是,花哨的框改变了主体的溢出值,以便隐藏浏览器滚动条。

正如Dave Kiss指出的那样,我们可以通过添加以下参数来阻止from这样做:

代码语言:javascript
复制
$('.image').fancybox({
  padding: 0,
  helpers: {
    overlay: {
      locked: false
    }
  }
});

但是,现在我们可以滚动主页,同时查看我们的花哨的框窗口。这比跳转到页面顶部要好,但这可能不是我们真正想要的。

我们可以通过添加下面的参数来阻止滚动:

代码语言:javascript
复制
    $('.image').fancybox({
      padding: 0,
      helpers: {
        overlay: {
          locked: false
        }
      },
    'beforeLoad': function(){
      disable_scroll();
        },
     'afterClose': function(){
       enable_scroll();
      }
    });

并添加来自galambalaz的这些函数。请参阅:How to disable scrolling temporarily?

代码语言:javascript
复制
    var keys = [37, 38, 39, 40];

    function preventDefault(e) {
      e = e || window.event;
      if (e.preventDefault) e.preventDefault();
      e.returnValue = false;  
    }

    function keydown(e) {
        for (var i = keys.length; i--;) {
            if (e.keyCode === keys[i]) {
                preventDefault(e);
                return;
            }
        }
    }

    function wheel(e) {
      preventDefault(e);
    }

    function disable_scroll() {
      if (window.addEventListener) {
          window.addEventListener('DOMMouseScroll', wheel, false);
      }
      window.onmousewheel = document.onmousewheel = wheel;
      document.onkeydown = keydown;
    }

    function enable_scroll() {
        if (window.removeEventListener) {
            window.removeEventListener('DOMMouseScroll', wheel, false);
        }
        window.onmousewheel = document.onmousewheel = document.onkeydown = null;  
    }
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13547007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档