【问题标题】:Full height slider skip one slide全高滑块跳过一张幻灯片
【发布时间】:2015-06-24 00:41:56
【问题描述】:

我正在使用 fullPage.js 为多个全屏幻灯片创建一个全宽和全高滑块。所以我的网站结构是这样的

section#f01
section#f02
section#f03.scrollfix
section#f04

我想在浏览网站时跳过section#f03.scrollfix。使用键盘和/或鼠标滚轮滚动时。

【问题讨论】:

  • 你讲的不是一般人理解的概念frame,second layer,first layer...不容易跟上。您必须说明您对它们的含义。
  • 感谢@Alvaro 的建议。我试图减少它只使用“内容”和“幻灯片”,这似乎很常见。
  • While the second content is activated, I want to skip the slide number 8 什么??
  • 我猜你已经设法解决了这个问题吧?
  • @RokoC.Buljan 我试图让它更容易理解。

标签: jquery css fullpage.js


【解决方案1】:

Demo online

如果您想在加载时将其删除,请使用 afterRender 回调,就像我在这里所做的那样:

$('#fullpage').fullpage({
    sectionsColor: ['yellow', 'orange', '#C0C0C0', '#ADD8E6'],

    afterRender: function () {
        removeSection2();
    }
});

function removeSection2() {
    // Move section 2 after the las section
    $('.fp-section:last').after($('#f02'));

    //removing the internal class `fp-section` so fullPage.js won't recognise it and won't be able to scroll to it.
    $('#f02').removeClass('fp-section');
}

如果您想在其他任何时候使用它,只需随时调用函数removeSection2

如果你想在某个时候恢复它,你可以使用这个其他功能:

function restoreSection2() {
    // Move all next sections to before the active section
    $('#f01').after($('#f02'));
    $('#f02').addClass('fp-section');
}

【讨论】:

  • 这似乎是一个非常干净的解决方案!非常感谢你的好建议!有点奇怪,但直到restoreSection2 我无法使用键盘导航。这不是 jsfiddle 问题,是吗?
  • @MarianRick 我可以用键盘垂直滚动没有任何问题。如果您谈论的是水平滚动或幻灯片上的单击,那是因为这些幻灯片位于已删除的部分,而不是第一个。我忘了将position:relative 添加到这些部分,现在我们删除了包含它的fp-section 类。 Here's the correction of the fiddle,注意 .section 的新 CSS 样式。
  • 我很抱歉。当然这是一个jsfiddle问题。您需要先在该区域内单击才能使键盘工作。使用真实网站时不存在此问题!
  • 只剩下一个问题,只要您恢复第二张幻灯片:您正在观看第三张幻灯片并单击restoreSection2。现在发生的情况是幻灯片跳转到section2。这是我真正需要避免的事情! jsfiddle.net/97tbk/548 我可以通过调用$("#fullpage").fullpage.reBuild(); 来实现这一点,但随后第2 部分出现并迅速滑到第3 部分。解决了这一点,一切都变得完美了!
  • @MarianRick 我认为这应该是另一个问题的一部分,因为我回答了您关于删除或“跳转”部分的问题。恢复它不是您最初问题的一部分。无论如何,here you have what you want,虽然我不会解释它更复杂。另外,现在它只能在css3:true 中工作,并且不能在IE 9 等旧浏览器中工作。
【解决方案2】:

我不确定我得到了你想要达到的目标,所以我选择这样解释你在问题中写的内容:

在您提供的实时示例中,可以单击每张幻灯片上的按钮以“打开”该幻灯片。完成后,您希望在用户单击页面上的导航按钮或使用滚动按钮时跳过幻灯片 #8。

如果是这种情况,那么为幻灯片的 onLeave 添加以下侦听器并结合底部的 css 会使整页跳过幻灯片 #8,只要存在“.scrollfix”类(也许应该将其重命名为“ .scrollskip" 或类似的东西):

$("#fullpage").fullpage({ onLeave: function(index, nextIndex, direction) {
  setTimeout(function() {
    var skip_section = $(".scrollfix").length > 0;
    if (nextIndex === 8 && skip_section) {
      if (direction === "down") {
        $("#fullpage").fullpage.moveSectionDown();
      } else {
        $("#fullpage").fullpage.moveSectionUp();
      }
    } 
  },1);
} })

需要更新 CSS 以完全隐藏幻灯片,而不是让它不可见:

.scrollfix {
  display: none!important;
}

在您的示例页面上将上面的 JS 代码粘贴到开发工具控制台中并对滚动修复进行微小的更改会导致我认为您寻求的行为。由于您的代码中已经有一个“onLeave”事件侦听器,因此在开发工具中添加此修复程序会破坏默认行为,但您应该能够将代码添加到正确的位置以使它们同时工作。

【讨论】:

  • 嘿@johanpersson,非常感谢您的好建议。我已经尝试过这个修复。一方面它工作得很好,但是一旦你在最后一张幻灯片上并尝试“打开它”,系统就会卡住。你试一试比我解释容易。我已经在此处更新了代码:img.hiamovi-client.com/index-stack.html 虽然在您在最后一张幻灯片上时会中断并尝试再次“关闭”幻灯片。
  • 我明白了...要解决这个问题,请在“second_layer”函数中添加以下行: $("#fullpage").fullpage.reBuild() 这将重建幻灯片,这将考虑到幻灯片 8 现在不再显示的事实。否则会发生什么是“整页窗口”认为总共有 9 张幻灯片,因此将其自身定位为向下九张幻灯片,而实际上它应该只向下八张。调用 reBuild 会解决这个问题。
  • 非常感谢@johanpersson,这很好用,而且是个好主意,很容易集成到我的网站中。我会尝试添加一些修复并给你反馈!也感谢您的解释!
  • 很高兴听到玛丽安。如果可行,那么也许您可以考虑将其标记为已接受的答案?
  • 非常感谢您为理解我的问题所付出的努力和时间。对不起,我给了赏金。他的解决方案非常干净且易于理解。它完全适合(现在)非常简化的问题,尽管包括两个非常有用的修复(在 cmets 中)。我选择他是为了达到堆栈溢出的最高质量。我也很想给你赏金,但我做不到。我对你找到的每一个答案都投了赞成票。将此视为对您努力的赞赏!再次感谢!最好的问候,玛丽安。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多