我的父玉模板中有一个导航栏,我想突出显示当前正在查看的项目。所以如果我在博客页面上,
ul
li Home
li.active Blog
li Contact Us
li About
如果不将导航栏结构复制到每个子模板中,有没有办法让父模板查看它正在扩展的页面并active
相应地应用类?
父级玉
doctype 5
html
block link
-var selected = 'home'; //default
-var menu = { 'home': '/home', 'blog': '/blog', 'contact': '/contact' };
body
nav
ul
each val, key in menu
li
if selected === key
a.selected(href=val, title=key)= key
else
a(href=val, title=key)= key
子玉
extends parent
block link
-var selected = 'blog';
这是一个更简单的方法:
在你的 layout.jade 中使用它(nav
例如,活动页面的名称在哪里。nav = 'about')
ul(class="#{nav}")
li.home Home
li.blog Blog
li.contact Contact Us
li.about About
然后把这是你的CSS:
ul.home li.home,
ul.blog li.blog,
ul.contact li.contact,
ul.about li.about {
color: red;
}
唯一适用的 CSS 规则是其ul
类存在的规则。您需要传入一个nav
等于“about”、“home”、“contact”或“blog”的变量,具体取决于您所在的页面。
将 Current 对象与三元表达式一起使用。一切都在文档中。
您可以像这样使用对象属性来生成活动菜单。如果您想在导航菜单中使用文件夹(Jade 版本):
ul(class="nav-menu")
li: a(class="#{ current.path[0] === 'index' ? 'active' : '' }", href="/") home
li: a(class="#{ current.path[0] === 'about' ? 'active' : '' }", href="/about/") about
好吧,上面的解决方案非常清楚,但是如果有人正在寻找更多对菜单的控制,那么有一个可用于 node.js 的模块。使用它,您将完全控制菜单。
用例:当菜单基于角色可见时