親の jade テンプレートにナビゲーション バーがあり、現在表示されているアイテムを強調表示したいと考えています。ブログページにいる場合は
ul
li Home
li.active Blog
li Contact Us
li About
ナビゲーション バーの構造を各子テンプレートにコピーせずに、親テンプレートが拡張しているページを認識し、active
それに応じてクラスを適用する方法はありますか?
より簡単な方法は次のとおりです。
これを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 で利用できるモジュールがあります。これを使用すると、メニューを完全に制御できます。
ユースケース: ロールに基づいてメニューが表示される場合