【发布时间】:2021-05-22 15:40:23
【问题描述】:
使用 HTML 和 CSS 创建一个对所有页面都是全局的并自动突出显示活动页面的导航栏的最佳方法是什么?我正在使用 PHP 和 Symfony 的模板引擎,twig。
我在想我可以创建一个navigation.json,路由器可以从中读取,然后在渲染时发送到模板。然后在模板方面,我可以让它遍历链接列表并将它们呈现为 html li 项。然后当它转到当前页面的链接时,它可以添加一个“活动”类。我不确定这是否是正确的方法。我非常感谢您的任何建议!谢谢
这是我正在使用的简单路由器。
<?php
include 'vendor/autoload.php';
$loader = new \Twig\Loader\FilesystemLoader('static/templates/');
$twig = new \Twig\Environment($loader, []);
if (!isset($_GET['q'])) {
echo $twig->render('home.html');
} else if ($_GET['q'] == 'curriculum') {
echo $twig->render('curriculum.html');
} else {
echo $twig->render('404.html');
}
?>
这是所有其他模板扩展的 base.html 模板。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{% block title %}{% endblock %}</title>
<!-- Favicon -->
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#4e9b4d">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<!-- Font Awesome Icons-->
<script src="https://kit.fontawesome.com/e1c18cc05e.js" crossorigin="anonymous"></script>
<!-- Custom CSS -->
<link rel="stylesheet" href="static/styles/main.css" />
{% block head %}{% endblock %}
</head>
<body>
<header class="navbar">
<a class="content" href="/">
<img src="static/assets/logo.png" alt="Education Transformation Centre Logo"/>
</a>
</header>
{% block content %}{% endblock %}
<footer class="footer">
//footer content here
</footer>
</body>
</html>
【问题讨论】: