动态设置导航的活动状态
我似乎经常遇到这个问题,永远找不到解决方案。 我有一个带顶部导航的Wordpress网站。 由于这是在我的header.php中,并在所有页面上使用,我无法对每个页面的活动菜单状态进行硬编码。
如何动态设置激活状态以适用于每个页面?
这是我目前的导航代码:
我已经设置了一个名为“active”的CSS类,它具有我的活动状态属性。 理想情况下,我正在寻找的是当你在“关于”页面(或任何其他页面)时,我为活动状态创建的类将被附加到当前的li类。
例:
<a href="https://stackoverflow.com/questions/15005731/set-active-state-on-navigation-dynamically//about">About
谢谢!
你可以试试一下
About
你可以这样做:
这会将active
类添加到 ,其中包含来自url的
page
。
$(function(){ var url = window.location.href; var page = url.substr(url.lastIndexOf('/')+1); $('.cemenu a[href*="'+page+'"]').addClass('active'); });
如果你想将类添加到其父li,则将最后一行替换为this,css类应如下所示:
.active a{ css properties for active li's a } // using closest $('.cemenu a[href*="'+page+'"]').closest('li').addClass('active');
要么
// using parent $('.cemenu a[href*="'+page+'"]').parent('li').addClass('active');
只是试试这里的小提琴
首先,有一个css伪类为样式化“活动”链接做好准备:
a:active {css}
根据您的情况,您必须将此类添加到样式中:
.active a, a:active {css}
但是你的需求在PHP方面似乎比CSS更多,也许其他人会帮助你完成这一部分。 将有一个jQuery的javascript解决方案,找到实际的位置然后注入一个css选择器到适当的元素。
查看本文和另一篇关于wordpress的文章。 它会帮助你。
Stack Overflow参考:
- 如何在Wordpress中将每个菜单上的不同项目定位到活动状态
- 如何在wordpress中添加活动状态和图标wp_nav_menu()
- 在Wordpress动态菜单中松开导航活动状态
- 谷歌搜索
尝试这样的事情:
'About Us', 'blog' => 'blog') ?> $page): ?> - > ">
可能值得研究使用诸如get_page_link之类的wordpres函数,这比使用Server super global更好,因为它不是很好。 如果你在一个文件夹而不是文档根目录中有wordpress,这也会失败,这只是一个简单的例子让你开始:)
你可以使用preg_replace()来添加class="active"
如下所示:
ob_start(); echo ''; $output = ob_get_clean(); $pattern = '~~'; $replacement = ''; echo preg_replace($pattern, $replacement, $output);
你可以这样试试
Home Contact
然后在您的主页上
$this_page='Home';
并在您的联系页面中
$this_page='Contact';