这是一种优雅的方法,我从某个地方复制了它,我只希望我能记住在哪里,这样我就可以把功劳归给他们。 8-)
我分配一个id
我的每个页面(或某个部分中的所有页面)如下所示:
In index.html: <body id='section-intro'>...
In faq.html: <body id='section-faq'>...
In download.html: <body id='section-download'>...
然后一个id
对于相应的链接:
<li id='nav-intro'><a href="./">Introduction</a></li>
<li id='nav-faq'><a href="./faq.html">FAQ</a></li>
<li id='nav-download'><a href="./download.html">Download</a></li>
在 CSS 中我设置了这样的规则:
#section-intro #nav-intro,
#section-faq #nav-faq,
#section-download #nav-download {
font-weight: bold;
/* And whatever other styles the current link should have. */
}
因此,这以一种主要是声明性的方式来控制当前页面所属链接的样式。您可以在此处查看它的实际效果:http://entrian.com/source-search/
设置完成后,这是一个非常干净且简单的系统,因为:
- 您无需在链接中搞乱模板标记
- 你最终不会使用大丑陋
switch
陈述或if / else / else
声明
- 将页面添加到某个部分即可正常工作 [TM]
- 改变事物的外观只意味着改变 CSS,而不是标记。
我没有使用 Django,但这个系统可以在任何地方使用。在您的情况下,您“设置各自的标题和内容”,您还需要设置body id
,并且不需要其他 Django 标记。
这个想法也很容易扩展到其他情况,例如。 “我希望除了下载页面本身之外,每个页面的侧边栏中都有一个下载链接。”你可以在 CSS 中这样做:
#section-download #sidebar #download-link {
display: none;
}
而不必将条件模板标记放入侧边栏 HTML 中。