php - 突出显示菜单父级 - CSS 和 PHP 问题

标签 php html css drop-down-menu menu

我正在起草一个新网站,在子页面上突出显示父页面时遇到了一些问题。我将解释我使用的是什么系统,然后我尝试了什么。

对于单个顶级元素,我使用:

PHP:

<?php $currentPage = basename($_SERVER['SCRIPT_NAME']); ?>

在页面顶部,然后是:

<ul>
<?php echo "\n"; if ($currentPage == '#') { ?><li class="on">News</li><?php } else { ?><li class="off"><a href="#">News</a></li><?php } ?>
</ul>

对于下拉菜单:

<li><a href="#" class="none">About</a>
<ul>
<?php echo "\n"; if ($currentPage == 'club.php') { ?><li class="on">Club</li><?php } else { ?><li class="off"><a href="../club.php">Club</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'coaches.php') { ?><li class="on">Coaches</li><?php } else { ?><li class="off"><a href="../coaches.php">Coaches</a></li><?php } ?>    
<?php echo "\n"; if ($currentPage == 'officials.php') { ?><li class="on">Officials</li><?php } else { ?><li class="off"><a href="../officials.php">Officials</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'management.php') { ?><li class="on">Management Team</li><?php } else { ?><li class="off"><a href="../management.php">Management</a></li><?php } ?>
</ul>
</li>
</ul>

样式为:

CSS:

.nav {
width: 990px;
height: 60px;
}

.nav ul {
margin-left: 0px;
padding-left: 0px;
width: auto;
}

.nav ul li {
float: left;
list-style-type: none;
position: relative;
}

.nav ul li a {
color: #666;
font-size: 14px;
text-decoration: none;
background-color: #fff;
display: block;
height: 36px;
width: 110px;
text-align: center;
line-height: 36px;
padding-bottom: 0px;
}

a.none {
cursor: default;
}

.nav li:hover > a {
background-color: #181d63;
text-decoration: none;
color: #fff;
}

.nav ul ul {
position: absolute;
visibility: hidden;
display: block;

}

.nav li ul li a {
background-color: #e5e5e5;
color: #000;
top: 38px;
text-align: center;
font-size: 12px;
}   

.nav li ul li a:hover {
background-color: #CCC;
color: #000;
top: 38px;
text-align: center;
}

.nav li:hover ul {
visibility: visible;
background-color: #181d63;
}

.on { 
color: #fff;
font-size: 14px;
text-decoration: none;
background-color: #181d63;
display: block;
height: 36px;
width: 110px;
text-align: center;
line-height: 36px;
cursor: default;

}

.off { 

}

这很有效,可以突出显示打开的页面,无论是在顶层还是下拉页面。我想这样做,以便在任何子页面上也将突出显示顶级父页面。

我试过:

PHP:

<ul>
<li><?php echo "\n"; if ($currentPage == 'club.php') { ?><li class="on">About</li><?php } else { ?><li class="off"><a href="#" class="drop">About</a><?php } ?>
<ul>
<?php echo "\n"; if ($currentPage == 'club.php') { ?><li class="on">Club</li><?php } else { ?><li class="off"><a href="../club.php">Club</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'coaches.php') { ?><li class="on">Coaches</li><?php } else { ?><li class="off"><a href="../coaches.php">Coaches</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'officials.php') { ?><li class="on">Officials</li><?php } else { ?><li class="off"><a href="../officials.php">Officials</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'management.php') { ?><li class="on">Management Team</li><?php } else { ?><li class="off"><a href="../management.php">Management</a></li><?php } ?>
</ul>
</li>
</ul>

并在 css 中添加以下内容:

CSS:

a.drop {
}

a.drop:hover {
visibility: visible !important;
background-color: #181d63;
}

此时,我遇到了两件事。

  1. 在“club.php”页面上现在会突出显示父级。

我不确定如何添加到 php 以合并所有子页面。 ('page1', 'page2') 似乎不起作用。

  1. 虽然父项现在突出显示,但该菜单项不再下拉。

我想我需要创建一个 .onchild 条件,当应用于顶级父级时,仍然允许下拉,但我真的很困惑如何去做这个,而且似乎越来越偏离我的原始代码!如果可能的话,我很想在 PHP 和 CSS 中保留这一切,而不求助于 jquery。

最佳答案

为什么不在父级“if”中添加子级?

<ul>
<li><?php echo "\n"; if ($currentPage == 'club.php' || $currentPage == 'coaches.php' || $currentPage == 'officials.php' || $currentPage == 'management.php') { ?><li class="on">About</li><?php } else { ?><li class="off"><a href="#" class="drop">About</a><?php } ?>
<ul>
<?php echo "\n"; if ($currentPage == 'club.php') { ?><li class="on">Club</li><?php } else { ?><li class="off"><a href="../club.php">Club</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'coaches.php') { ?><li class="on">Coaches</li><?php } else { ?><li class="off"><a href="../coaches.php">Coaches</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'officials.php') { ?><li class="on">Officials</li><?php } else { ?><li class="off"><a href="../officials.php">Officials</a></li><?php } ?>
<?php echo "\n"; if ($currentPage == 'management.php') { ?><li class="on">Management Team</li><?php } else { ?><li class="off"><a href="../management.php">Management</a></li><?php } ?>
</ul>
</li>
</ul>

编辑:或者你可以使用 in_array

$array = array('club.php', 'coaches.php', 'etc');
if(in_array($currentPage, $array)) { /* do code */ }

关于php - 突出显示菜单父级 - CSS 和 PHP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22434936/

相关文章:

html - CSS LIst 样式 Font Awesome 不工作

Javascript:在平面文件上存储/检索数据的最有效方法

html - 仅 CSS 导航 - 单选框显示/隐藏页面

Javascript 更改选定的菜单项类

php - 在 foreach 循环中构建一个可以排序的 php 数组

php - 提交表单后字符集错误并且也未正确插入到 mysql 数据库中

php - 如何检测用户何时成功完成php中的文件下载

javascript - 我如何修复复选框内部

html - 创建黑白网格 HTML/CSS

javascript - JS Menu 保持菜单状态