当子元素在PHP中处于活动状态时,向父元素和子元素添加活动类


Adding active class to parent and child element when child is active with PHP

是否有一个解决方案,无论何时子元素Subpage1.phpSubpage2.php是活动的,使父元素practices.php也得到class="active" ?

<ul>
    <li class="<?php echo ($_SERVER['PHP_SELF'] == " /index.php " ? "active " : " ");?>">
        <a href="index.php">Start</a>
    </li>
    <li class="<?php echo ($_SERVER['PHP_SELF'] == " /practices.php " ? "active " : " ");?>">
        <a href="practices.php">Practices</a>
        <ul>
            <li class="<?php echo ($_SERVER['PHP_SELF'] == " /subpage1.php " ? "active " : " ");?>">
                <a href="subpage1.php">Subpage1</a>
            </li>
            <li class="<?php echo ($_SERVER['PHP_SELF'] == " /subpage2.php " ? "active " : " ");?>">
                <a href="subpage2.php">Subpage2</a>
            </li>
        </ul>
    </li>
</ul>

这里也有类似的问题,但是父子关系的问题在这里无法解决

这不是最优的,但是您可以使用in_array():

检查$_SERVER['PHP_SELF']对元素及其子元素的值。
<li class="<?php echo (in_array($_SERVER['PHP_SELF'], array(
        '/practices.php',
        '/subpage1.php',
        '/subpage2.php',
    )) ? "active " : " ");?>">
    <a href="practices.php">Practices</a>
    ...
</li>

如果$_SERVER['PHP_SELF']匹配数组中的任何项,该类将被设置为活动。