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

时间:2016-08-11 09:00:43

标签: php html css parameter-passing

我想制作导航栏,如果用户在该子页面上,则一个元素的背景颜色会发生变化。
用于检查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; ?>;
}  

如果我把我的“ckecking part”od代码放在索引上,它就能很好地工作;返回true或false,但由于某种原因,它不会将参数传递给样式文件 所以现在我把“检查部分”放到样式文件中,但是,不管我在哪个子页面上,它返回相同的结果(即使'index'不是url的一部分,也总是正确的。)

有关如何处理此问题的任何想法? :)

3 个答案:

答案 0 :(得分:1)

在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

答案 1 :(得分:1)

为什么不拥有两个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>
[...]

答案 2 :(得分:0)

strpos将永远不会返回true。它将返回false或返回整数。所以试试如下。

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