如何使用php显示css活动类?

时间:2016-09-20 12:30:51

标签: php

这是我的网站nav.php看起来像:

<li <?php echo $active; ?>><a href="index">Home</a></li>
<li <?php echo $active; ?>><a href="report">Report</a></li>
<li <?php echo $active; ?>><a href="chart">Chart</a></li>
<li <?php echo $active; ?>><a href="export">Export</a></li>

和header.php页面如下所示:

<?php
$pageName = basename($_SERVER['PHP_SELF']);
$explode    = explode('.', $pageName);
$title  = ucfirst($explode[0]);    

if($title == "Report") {
    $active     = 'class="active"';
} else {
    $active = '';
}
?>

我正在使用上面的代码来显示当前查看任何页面的css .active类。但它正在为所有页面添加.active类。

注意:我有4页。例如:索引,报告,图表和导出。

和我的整页结构是这样的:

在index.php页面中,我正在调用以下页面。

header.php
nav.php
js.php
footer.php

6 个答案:

答案 0 :(得分:2)

使用此

$activePage = basename($_SERVER['PHP_SELF'], ".php");

并在你的

 <li  <?php if($activePage=="Report") { echo "class='active'"; } ?>><a href="index">Home</a></li></li>

答案 1 :(得分:1)

尝试这样做:

<li class="<?= ('Home' == $title) ? 'active' : ''; ?>">
    <a href="index">Home</a>
</li>
<li class="<?= ('Report' == $title) ? 'active' : ''; ?>">
    <a href="report">Report</a>
</li>
<li class="<?= ('Chart' == $title) ? 'active' : ''; ?>">
    <a href="chart">Chart</a>
</li>
<li class="<?= ('Export' == $title) ? 'active' : ''; ?>">
    <a href="export">Export</a>
</li>

答案 2 :(得分:1)

最简单的方法:

$pages = array();
$pages["home.php"] = "Home";
$pages["report.php"] = "Report";
$pages["chart.php"] = "Chart";
$pages["export.php"] = "Export";

$active = "home.php";

<?php foreach($pages as $url=>$title):?>
  <li>
       <a <?php if($url === $active):?>class="active"<?php endif;?> href="<?php echo $url;?>">
         <?php echo $title;?>
      </a>
  </li>
<?php endforeach; ?>

答案 3 :(得分:1)

因为您只能同时定义ng-repeat一次。

您可能应该使用数组:

$active

现在你遍历那个数组,检查,哪个是活动的:

$navigation = array('index', 'report', 'chart', 'export);

答案 4 :(得分:1)

包装将为您提供比静态内容更多的灵活性

$pageName = basename($_SERVER['PHP_SELF']);
$explode    = explode('.', $pageName);
$title  = ucfirst($explode[0]);   
$nav = [
    'index' => 'Home',
    'report' => 'Report',
    'chart' => 'Chart',
    'export' => 'Export'
];

foreach ($nav as $key => $value) {
    echo '<li class="'.($key == $title ? 'active' : '').'>';
    echo '<a href="'.$key.'">'.$value.'</a>' ;
    echo '</li>'
}

答案 5 :(得分:0)

尝试执行以下操作

<li <?php echo ($pageName=="index.php")?" class='active'" :""; ?>><a href="index">Home</a></li>
<li <?php echo ($pageName=="report.php")?" class='active'" :""; ?>><a href="report">Report</a></li>
<li <?php echo ($pageName=="chart.php")?" class='active'" :""; ?>><a href="chart">Chart</a></li>
<li <?php echo ($pageName=="export.php")?" class='active'" :""; ?>><a href="export">Export</a></li>