当我点击 link 时,如何让这个菜单在 Wordpress 上消失?
How to make disappear this menu on Wordpress when I click a link?
我有一个问题,我觉得很简单,但我自己解决不了。我正在使用 WordPress 和 Pistis 模板设计一个单页网站。
问题是菜单被预定义为汉堡菜单,当它被点击时,整个页面变成灰色,中间出现一个大菜单。我会 post 一张图片,让你更好地理解它。
我想要发生的是,当您单击任何菜单元素 (link) 时,整个菜单都会消失,显示网站就像之前有人单击汉堡图标显示菜单一样。由于它是单页,因此单击时不会加载不同的页面,它只是移动到页面的适当部分。只能加点CSS怎么办?
在我们做任何事情之前,请注意,如果您的主题得到更新,此更改将被覆盖。创建一个子主题并在那里进行更改可能是个好主意(尽管看起来原始主题已经修改了不少。)
除此之外,单击任何链接时需要编辑以使菜单自动关闭的文件位于此处:/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(){
应该就可以了。
记得 clear/hard-refresh 浏览器的缓存,以便它获取此更改。
我有一个问题,我觉得很简单,但我自己解决不了。我正在使用 WordPress 和 Pistis 模板设计一个单页网站。
问题是菜单被预定义为汉堡菜单,当它被点击时,整个页面变成灰色,中间出现一个大菜单。我会 post 一张图片,让你更好地理解它。
我想要发生的是,当您单击任何菜单元素 (link) 时,整个菜单都会消失,显示网站就像之前有人单击汉堡图标显示菜单一样。由于它是单页,因此单击时不会加载不同的页面,它只是移动到页面的适当部分。只能加点CSS怎么办?
在我们做任何事情之前,请注意,如果您的主题得到更新,此更改将被覆盖。创建一个子主题并在那里进行更改可能是个好主意(尽管看起来原始主题已经修改了不少。)
除此之外,单击任何链接时需要编辑以使菜单自动关闭的文件位于此处:/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(){
应该就可以了。
记得 clear/hard-refresh 浏览器的缓存,以便它获取此更改。