在菜单中的当前页面上设置CSS类

时间:2014-02-13 18:37:37

标签: javascript php jquery html css

我有一个静态网站,但我已经通过php的include功能包含了页面的不同位(头部,标题,图像滑块,页脚),以使网站易于管理。 现在问题是菜单栏中的当前页面名称必须选择=“已选择”以显示在前端按下的当前页面名称。

我做了一个解决方案,给每个菜单项一个id,然后将以下代码注入每个页面的末尾并设置该页面的id(在示例代码中选择的主页按钮ID)。

<script type="text/javascript">
    $(document).ready(function() {
        $('#home').addClass('active');
    });
</script>

现在问题是我必须在每个页面中包含此脚本并将id更改为该页面(例如,在上面的脚本中,我已将代码粘贴到主页中,

我想要一个解决方案,我只将一段代码添加到我的footer.php中,它会自动检测当前页面并为该菜单项设置select =“selected”。

提前谢谢大家......

3 个答案:

答案 0 :(得分:1)

在PHP中,您可以将active类放在菜单定义上(如果它在每个页面上都相同),如果您知道当前访问的页面:

<ul>
   <li <?php if($current_page == 'home') echo 'class="active"'; ?>>Home</li>
   <li <?php if($current_page == 'blog') echo 'class="active"'; ?>>Blog</li>
   <li <?php if($current_page == 'contact') echo 'class="active"'; ?>>Contact</li>
</ul>

依此类推......你不需要Javascript(一些用户禁用)。唯一需要的是获取$current_page变量,该变量可以基于页面的URL或ID,具体取决于您当前的网站架构。

答案 1 :(得分:1)

我发现的(特定)问题的解决方案是,
我给了所有菜单项的id,并且那些id是相关文件的名称(它们将链接到的文件),例如链接到home.php的按钮被赋予id “home”和链接到profile.php的按钮被赋予了“profile”的id,而不是在页脚中包含以下代码

<?php
$php_self = $_SERVER['PHP_SELF'];
$basename = basename($php_self);
$id = basename($basename, ".php");
?>

<script type="text/javascript">
   $(document).ready(function() {
      $('#<?php echo $id; ?>.addClass('active');
   });
</script>

(使用jQuery,但如果网站上没有jQuery,则必须使用document.getElementById。)

谢谢大家的时间..

答案 2 :(得分:0)

你可以一起使用js和php:

$(document).ready(function(){
    $("#<?=$current_page?>").addClass('active')
})

它比Maxime Lorant的代码短......

或者,如果您的网址类似于 site.com/#home ,则这是解决方案: Get css id from url(没有php / js)