我从我的页面 template.html
获得了以下 html 片段。
<ul class='nav'>
<li class="active"><a href='/'>Home</a></li>
<li><a href='/lorem'>Lorem</a></li>
{% if session['logged_in'] %}
<li><a href="/account">Account</a></li>
<li><a href="/projects">Projects</a>
<li><a href="/logout">Logout</a></li>
{% endif %}
{% if not session['logged_in'] %}
<li><a href="/login">Login</a></li>
<li><a href="/register">Register</a></li>
{% endif %}
</ul>
正如您在第 2 行中看到的,该类处于活动状态。这会突出显示带有 twitter bootstrap css 文件的活动选项卡。现在,如果我访问 www.page.com/
这将正常工作,但当我访问 www.page.com/login
时则不行。它仍然会突出显示主页链接作为活动选项卡。
当然,我可以使用 Javascript/jQuery 轻松地做到这一点,但我不想在这种情况下使用它。
已经有一个 适用于 ruby on rails 的可行解决方案, 但我不知道如何将其转换为 python/jinja(我对 jinja/flask 很陌生,根本没有使用过 ruby)
原文由 Azeirah 发布,翻译遵循 CC BY-SA 4.0 许可协议
你看过这个吗? https://jinja.palletsprojects.com/en/3.0.x/tricks/#highlighting-active-menu-items
突出显示活动菜单项
通常您希望有一个带有活动导航项的导航栏。这很容易实现。因为子模板中块外的分配是全局的并且在评估布局模板之前执行,所以可以在子模板中定义活动菜单项:
然后布局模板可以访问
active_page
。此外,为该变量定义一个默认值是有意义的: