如果url包含正确的字符串,改变导航栏的背景颜色


Change background colour in navbar if url contains right string

我想做一个导航栏,其中一个元素的背景颜色会改变,如果用户将在该子页面。
检查url是否包含所选字符串的代码:

<?php
$url = $_SERVER['REQUEST_URI'];
//echo ($url);
if (strpos($url, 'index.php') == true) {
    //echo 'Current page contains index.php';
    $atm = "#2275A8";
} else {
    $atm = "#00427A";
} 
?>

这是同一文件的一部分,保存为。php文件

<?php 
    header("Content-type: text/css");
?>
.ico1 {
    background: <?php echo $atm; ?>;
}  

如果我把我的"检查部分"od代码索引,它工作得很好;返回真或假,但由于某种原因没有将参数传递给样式文件。
所以现在我把"检查部分"到样式文件,但是,无论我在哪个子页面,它返回相同的结果(总是正确的,即使'index'不是url的一部分)。

你知道怎么处理这个吗?:)

在style.css文件中定义你想要的样式的类,并在php文件中动态地改变你想要改变样式的元素的类,如下面的例子所示。

style.css

.ico1 {
   background: color1;
}
.ico2 {
   background: color2;
}

index.php(或包含导航条的文件)

<?php
$url = $_SERVER['REQUEST_URI'];
if (strpos($url, 'index.php') == true) {
    //echo 'Current page contains index.php';
    $atm = "ico1";
} else {
    $atm = "ico2";
} 
?>
...
<div class="<?php echo $atm;?>"> // navbar

为什么不使用这两个css类,并在你想要应用这些类的元素中创建一个条件:

CSS

.ico1-0 {
  background: #2275A8;
}
.ico1-1 {
  background: #00427A;
}
PHP

[...]
<div class="<?php echo (strpos($url, 'index.php') === true) ? 'ico1-0' : 'ico1-1'; ?>"></div>
[...]

strpos永远不会返回true。它要么返回false,要么返回整数。所以试着像下面这样。

if (strpos($url, 'index.php') !== false)