当前位置: 首页 > 知识库问答 >
问题:

如何在WordPress中向当前菜单项添加“活动”类

谢诚
2023-03-14

我有一个基于WordPress的网站,我的主题通过添加“当前菜单项”类来突出当前菜单项。

问题是,我有一个包含3个子菜单项的菜单项,它们都指向具有不同容器ID的相同页面(它们的href包含容器ID),因此它们都被突出显示。

如何仅突出显示href指向当前查看的容器的菜单项?

<ul>
<li><ahref="URL/who-we-are/"><span>WhoWeAre</span></a>
<ul>
    <li id="first"><ahref="URL/who-we-are/#wherewework"><span>WhereWeWork</span></a></li>
    <li id="second"><ahref="URL/who-we-are/#whatwebelieve"><span>WhatWeBelieve</span></a></li>
    <li id="third"><ahref="URL/who-we-are/#ourpartners"><span>OurPartners</span></a></li>
</ul>
</li>
<li><ahref="#"><span>GetInvolved</span></a>
<ul>
    <li><ahref="URL/vacancies/"><span>Vacancies</span></a></li>
    <li><ahref="URL/Become-Active/"><span>BecomeActive</span></a></li>
</ul>
</li>
<li><ahref="URL/contactus/"><span>ContactUs</span></a></li>
</ul>

我尝试了这个答案,在标签后面插入了以下内容:

function onVisibilityChange(el, callback) {
    var old_visible;
    return function () {
        var visible = isElementInViewport(el);
        if (visible != old_visible) {
            old_visible = visible;
            if (typeof callback == 'function') {
                callback();
            }
        }
    }
}

var handler = onVisibilityChange(#whatwebelieve, function() {
    $( "#second" ).removeClass( "current-menu-item" )
});


//jQuery
$(window).on('DOMContentLoaded load resize scroll', handler);

共有1个答案

宰父正真
2023-03-14

它是一个简单的滚动间谍。

// Cache selectors
var lastId,
  topMenu = $("#top-menu"),
  topMenuHeight = topMenu.outerHeight() + 15,
  // All list items
  menuItems = topMenu.find("a"),
  // Anchors corresponding to menu items
  scrollItems = menuItems.map(function() {
    var item = $($(this).attr("href"));
    if (item.length) {
      return item;
    }
  });

// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e) {
  var href = $(this).attr("href"),
    offsetTop = href === "#" ? 0 : $(href).offset().top - topMenuHeight + 1;
  $('html, body').stop().animate({
    scrollTop: offsetTop
  }, 300);
  e.preventDefault();
});

// Bind to scroll
$(window).scroll(function() {
  // Get container scroll position
  var fromTop = $(this).scrollTop() + topMenuHeight;

  // Get id of current scroll item
  var cur = scrollItems.map(function() {
    if ($(this).offset().top < fromTop)
      return this;
  });
  // Get the id of the current element
  cur = cur[cur.length - 1];
  var id = cur && cur.length ? cur[0].id : "";

  if (lastId !== id) {
    lastId = id;
    // Set/remove active class
    menuItems
      .parent().removeClass("active")
      .end().filter("[href='#" + id + "']").parent().addClass("active");
  }
});
body {
  height: 6000px;
  font-family: Helvetica, Arial;
}

#top-menu {
  position: fixed;
  z-index: 1;
  background: white;
  left: 0;
  right: 0;
  top: 0;
}

#top-menu li {
  float: left;
}

#top-menu a {
  display: block;
  padding: 5px 25px 7px 25px;
  width: 4em;
  text-align: center;
  -webkit-transition: .5s all ease-out;
  -moz-transition: .5s all ease-out;
  transition: .5s all ease-out;
  border-top: 3px solid white;
  color: #aaa;
  text-decoration: none;
}

#top-menu a:hover {
  color: #000;
}

#top-menu li.active a {
  border-top: 3px solid #333;
  color: #333;
}

#foo {
  position: absolute;
  top: 400px;
}

#bar {
  position: absolute;
  top: 800px;
}

#baz {
  position: absolute;
  top: 1200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="top-menu">
  <li class="active">
    <a href="#">Top</a>
  </li>
  <li>
    <a href="#foo">Foo</a>
  </li>
  <li>
    <a href="#bar">Bar</a>
  </li>
  <li>
    <a href="#baz">Baz</a>
  </li>
</ul>

<a id="foo">Foo</a>


<a id="bar">Bar</a>


<a id="baz">Baz</a>
 类似资料:
  • 我使用下面的代码将活动类添加到菜单项。该网站是99%使用WooCommerce的Ecomm,我使用产品类别作为顶级导航项目。下面的代码适用于几乎所有项目,除非在产品子类别上处于活动状态。 本质上,我希望顶层导航项被标记为活动类,即使选择了子类别。

  • 我有一个WordPress菜单,其中有一些菜单项是我通过标准(拖放)WordPress管理菜单功能添加的。最近,我不得不在菜单中添加另一项,以生成动态href链接。我在函数中使用以下代码实现了这一点。php文件: //将“我的个人资料”菜单项动态添加到“成员”菜单(根据当前登录的用户生成用户名) add_filter(wp_nav_menu_items、add_profilelink_in_men

  • 我们正在使用Wordpress将菜单项添加到我们的导航栏。Cleary这使得更改变得简单,但它阻止了某些自定义。具体来说,我们希望更改导航栏中单个菜单项的颜色。有没有办法“添加”一个菜单项到数组的末尾,这样它就总是在最后一个位置,并且在导航栏中是不同的颜色?我意识到我们需要在CSS中创建一个样式来更改最后一个项目的颜色。 例如,当前导航栏: 主页关于美国产品/服务行业链接“联系我们” 我们想让“联

  • 我正在Wordpress中实现一个主题。此主题有一个顶部导航菜单,每个父项下都有水平子菜单。它将“活动”类放在当前已查看的父项上(否则不会显示其子菜单项)。通过在函数中使用这两个函数,我设法在当前父项上维护“活动”类。php。 但是现在我的问题是,当我点击任何父菜单项的子菜单或子菜单项时,它成功地将我带到子页面,但从父菜单中删除“活动”类,并将其放在子菜单项上(因为它是当前查看的页面)。我不希望它

  • 我正在为客户创建一个Wordpress站点,网址是http://digitaldemo.net/vintage/about/。我遇到的唯一问题是,当我在给定的页面上时,li.current-menu-item类没有被应用。 例如,在上面的URL上,关于菜单项应该有更深的灰色背景,而不是图标后面的白色“聚光灯”。 下面是我的导航的CSS: 每个li都有一个独特的背景图像(例如li.blog有blog

  • 我有一个Eclipse RCP应用程序,并通过Trimbar->Window Trim->Toolbar->Tool Control添加了一个tollbar。我曾尝试使用SWT菜单添加菜单/菜单项,但它在工具栏中不可见。其他组件,如按钮,标签,组合框添加没有任何问题。是否可以将菜单项添加到工具栏? 谢谢