【问题标题】:How to make disappear this menu on Wordpress when I click a link?当我单击链接时,如何使 Wordpress 上的此菜单消失?
【发布时间】:2019-06-03 23:09:30
【问题描述】:

我有一个问题,我想这很简单,但我无法自己解决。我正在使用 WordPress 和 Pistis 模板设计一个单页网站。

问题是菜单被预定义为汉堡菜单,当它被点击时,整个页面变灰,中间出现一个大菜单。我会发一张图片,让你更好地理解它。

我想要发生的是,当您单击任何菜单元素(链接)时,整个菜单都会消失,显示的网站与之前任何人显示菜单单击汉堡图标时一样。由于它是单页,因此单击时不会加载不同的页面,它只是移动到页面的正确部分。只能添加一些 CSS 怎么办?

【问题讨论】:

  • 我编辑了您的问题以删除一些不必要的 cmets/observations,它们不会为对话添加任何有用的内容。下次提问时请尽量直截了当。
  • 回答您的问题:我认为仅使用 CSS 不可能实现您想要做的事情(至少在撰写本文时不会。)您需要一些 JS 来处理点击事件并让它关闭/淡出您的菜单,您可以通过functions.php 或通过特定于站点的插件将其添加到您的站点。
  • 好的,感谢您的编辑。下次我写文章时,我会努力做得更好。所以,我在我的 Wordpress 文件夹中找到了 JS 文件。无论如何,我尝试添加一些代码以使单击链接时菜单消失,但我没有让它工作。你能帮我解决这个问题吗?我不知道有什么问题。您可以在此链接中查看菜单的类:meryrocket.com

标签: css wordpress templates menu hide


【解决方案1】:

在我们做任何事情之前,请注意,如果您的主题有更新,此更改将被覆盖。改为创建一个子主题并在那里进行更改可能是个好主意(尽管原始主题似乎已经修改了很多。)

除此之外,您需要编辑以在单击任何链接时自动关闭菜单的文件位于此处:/wp-content/themes/pistis/menu.js。这是处理菜单的代码:

//open/close primary navigation
$('.cd-primary-nav-trigger').on('click', function(){
    $('.cd-menu-icon').toggleClass('is-clicked'); 
    $('.cd-header').toggleClass('menu-is-open');

    //in firefox transitions break when parent overflow is changed, so we need to wait for the end of the trasition to give the body an overflow hidden
    if( $('.cd-primary-nav').hasClass('is-visible') ) {
        $('.cd-primary-nav').removeClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
            $('body').removeClass('overflow-hidden');
        });
    } else {
        $('.cd-primary-nav').addClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
            $('body').addClass('overflow-hidden');
        }); 
    }
});

$('.menu-item-2539 a').on('click', function(){
    $('.cd-menu-icon').toggleClass('is-clicked'); 
    $('.cd-header').toggleClass('menu-is-open');

    //in firefox transitions break when parent overflow is changed, so we need to wait for the end of the trasition to give the body an overflow hidden
    if( $('.cd-primary-nav').hasClass('is-visible') ) {
        $('.cd-primary-nav').removeClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
            $('body').removeClass('overflow-hidden');
        });
    } else {
        $('.cd-primary-nav').addClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
            $('body').addClass('overflow-hidden');
        }); 
    }
});

变化:

$('.menu-item-2539 a').on('click', function(){

进入:

$('.menu-item a').on('click', function(){

应该这样做。

请记住清除/硬刷新浏览器的缓存,以便它接收此更改。

【讨论】:

  • 太棒了,伙计!实际上,我可以看到非常接近,非常感谢您的更正。我改变了你告诉我的内容,它正在工作,菜单消失了。无论如何,现在还有另一个问题。我想这很简单,但我不知道为什么会这样:当我点击菜单的任何链接时,它会隐藏起来,并将我带到我点击过的部分(使用 href 和#id),但是问题是,当在菜单上单击链接部分时,该部分本身周围会出现蓝线(看起来好像选择了某些东西,但事实并非如此)。关于如何解决这个问题的任何想法?
  • 这是您想在新问题中提出的问题,因为它与原始问题没有直接关系。如果您确实发布了一个新问题并在此处留下一个链接(我现在就在附近),我会停下来并尝试帮助您解决这个问题 :) 暂时,请考虑 marking this answer as accepted .
猜你喜欢
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多