使用Magellan在Scroll上扩展和折叠Foundation 6手风琴菜单

时间:2016-09-29 11:01:12

标签: javascript jquery zurb-foundation accordion magellan

我使用Foundation 6 Accordion Menu和Magellan构建了一个测试站点:http://studiospaces.vlvtn.com/test

我希望顶级标题在滚动时到达相关部分(例如#header-1,#header-2)时展开和折叠。

这有点超出我的能力,对正确方向的任何帮助都将受到极大的赞赏!

提前谢谢。

埃文。

1 个答案:

答案 0 :(得分:1)

好问题......

玩过这个游戏,我想我已经破解了它,希望这些评论有意义。

我使用的magellan update.zf.magellan触发了一个事件。鼠标滚动时会发生这种情况。

由于Magellan在当前活动锚点中添加active类,我将获取此元素并将其与存储的lastActive变量进行比较。如果它们不同,则该部分已更新。

然后我检查当前活动锚点是否是子菜单的子节点,如果不是,则关闭所有打开的菜单。如果是孩子,我打开它的父母。

您可以使用Accordion docs page

中描述的方法打开和关闭手风琴菜单

此方法依赖于类,因此它可能不适用于您的设置。如果使用深层链接,您可以使用网址中的当前#来检测更改。



//store the last active element
var lastActive = null;
//update called when magellan changes
$('#test-menu').on('update.zf.magellan', function() {

  //get the curerntly active section in the menu
  var $active = $(this).find('a.active');
  //the active anchor has changed - use the HTML element to compare
  if (lastActive !== $active[0]) {

    lastActive = $active[0];

    /*
     does the ative element have a parent <ul> that is a submenu
     <ul class="menu vertical nested submenu is-accordion-submenu is-active"> <--- This element
     <li>
     <a href="#" class="active">Item 1A</a> <-- the active element
     </li>
     <li>
     <a href="#" >Item 1BA</a>
     </li>
     </ul>
     */
    var isActiveParentASubmenu = $active.parent().parent().hasClass('is-accordion-submenu'); //the UL
    //
    if (!isActiveParentASubmenu) {
      //current active does not have a parent that is a submenu, therefore close all open submenus
      $('#test-acc').foundation('up', $('.is-accordion-submenu'));
    } else {
      //current active is a child of a subment, open the sub menu it belongs to
      $('#test-acc').foundation('down', $active.parent().parent());
    }
  }


});
&#13;
<div data-sticky-container>
  <div class="sticky" data-sticky data-options="marginTop:0;" style="width:100%">
    <div id="test-menu" data-magellan>

      <ul id="test-acc" class="vertical menu" data-accordion-menu data-multi-open="false">
        <li>
          <a href="#first">First Arrival</a>
          <ul class="menu vertical nested">
            <li><a href="#first-a">First A</a>
            </li>
            <li><a href="#first-b">First B</a>
            </li>
          </ul>
        </li>
        <li><a href="#second">Second Arrival</a>
        </li>
        <li><a href="#third">Third Arrival</a>
          <ul class="menu vertical nested">
            <li><a href="#third-a">Third A</a>
            </li>
            <li><a href="#third-b">Third B</a>
            </li>
          </ul>
        </li>
      </ul>

    </div>
  </div>
</div>

<div class="sections">
  <section id="first" data-magellan-target="first">
    <h1>First Section</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
  <section id="first-a" data-magellan-target="first-a">
    <h1>First A</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
  <section id="first-b" data-magellan-target="first-b">
    <h1>First B</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
  <section id="second" data-magellan-target="second">
    <h1>Second Section</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
  <section id="third" data-magellan-target="third">
    <h1>Third Section</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
  <section id="third-a" data-magellan-target="third-a">
    <h1>Third A</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
  <section id="third-b" data-magellan-target="third-b">
    <h1>Third B</h1>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
    <p>Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada. Sed porttitor lectus nibh. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut libero malesuada feugiat. Nulla quis lorem ut
      libero malesuada feugiat. Cras ultricies ligula sed magna dictum porta. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Mauris blandit aliquet elit, eget
      tincidunt nibh pulvinar a.</p>
  </section>
</div>
&#13;
&#13;
&#13;