我的父玉模板中有一个导航栏,我想突出显示当前正在查看的项目.所以,如果我在博客页面上,
ul
li Home
li.active Blog
li Contact Us
li About
Run Code Online (Sandbox Code Playgroud)
如果不将导航栏结构复制到每个子模板中,是否有办法让父模板查看它正在扩展的页面并相应地应用active
该类?
Pic*_*els 69
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
Run Code Online (Sandbox Code Playgroud)
child.jade
extends parent
block link
-var selected = 'blog';
Run Code Online (Sandbox Code Playgroud)
这是一个更简单的方法:
在layout.jade中使用它(其中nav
是活动页面的名称.例如,nav ='about')
ul(class="#{nav}")
li.home Home
li.blog Blog
li.contact Contact Us
li.about About
Run Code Online (Sandbox Code Playgroud)
然后把这是你的CSS:
ul.home li.home,
ul.blog li.blog,
ul.contact li.contact,
ul.about li.about {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
唯一适用的css规则是其ul
类存在的规则.您需要传入一个nav
等于'about','home','contact'或'blog' 的变量,具体取决于您所在的页面.
小智 5
将 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
Run Code Online (Sandbox Code Playgroud)