我在父级Jade模板中有一个导航栏,我希望能够突出显示当前正在查看的项目。因此,如果我在博客页面上,
ul
li Home
li.active Blog
li Contact Us
li About
在不将导航栏结构复制到每个子模板中的情况下,有没有一种方法让父模板看到它正在扩展的页面,并相应地应用active
类?
我在父级Jade模板中有一个导航栏,我希望能够突出显示当前正在查看的项目。因此,如果我在博客页面上,
ul
li Home
li.active Blog
li Contact Us
li About
在不将导航栏结构复制到每个子模板中的情况下,有没有一种方法让父模板看到它正在扩展的页面,并相应地应用active
类?
parent.jade
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
child.jade
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
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',具体取决于你所在的页面。
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
26| li(class="#{ current.path[0] == 'index' ? 'active' : '' }") 27| a(href='/') Main 28| li(class="#{ current.path[0] == 'sub' ? 'active' : '' }") 29| a(href='#sub') Subscribe无法读取未定义的属性"path" - JD Allen
好的,以上解决方案非常清晰,但如果有人想要更多控制菜单,则可以使用适用于Node.js的模块。使用它,您将完全控制菜单。
用例:当基于角色可见的菜单