【问题标题】:Change background colour in navbar if url contains right string如果 url 包含正确的字符串,则更改导航栏中的背景颜色
【发布时间】:2016-12-17 22:09:43
【问题描述】:

我想制作导航栏,如果用户在该子页面上,其中一个元素的背景颜色会发生变化。
检查 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 代码放在索引上,它工作得很好;返回真或假,但由于某种原因,它没有将参数传递到样式文件中。
所以现在我将“检查部分”放入样式文件中,但是,无论我在哪个子页面上,它都会返回相同的结果(即使“索引”不是 url 的一部分,也总是如此)。

关于如何处理这个问题的任何想法? :)

【问题讨论】:

    标签: php html css parameter-passing


    【解决方案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
    

    【讨论】:

    • 样式文件为 .php 文件。在 index.php 中它工作正常 :)
    • 我不明白。这是一个很好的答案还是您正在寻找其他东西? :)
    • 它没有解决我的问题,抱歉。我想在我的样式(.php)文件中有变量 $atm 但它没有通过(所以我尝试移动所有 php 以检查到样式文件但它不工作 - 总是返回相同的结果,无论我在 whisc supage )
    • 能否直接在要更改的元素样式中添加检查部分?比如
      。将这两种样式都写成 css 文件中的类可能是一个更好的解决方案,而不仅仅是在导航栏中更改类
    • 它“有效” - 我将 echo 放入其中以确定结果。:) 但它仍然没有将变量传递到 style.php 文件中,所以颜色没有改变。
    【解决方案2】:

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

    【讨论】:

    • 解决方案似乎真的很好解决我想要的问题。但问题是当我将你的 PHP 添加到 div 类(我想更改背景)之后,我的页面在 PHP 之后变为空白(页面仅在我粘贴你的语法的位置前面显示内容(就像它会是缺少像 > 或 } 这样的结尾,我不知道)。
    • 我搞错了,strpos的调用不正确,更新了
    【解决方案3】:

    strpos 永远不会返回 true。它要么返回 false 要么返回整数。所以尝试如下。

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

    【讨论】:

    • 我按照你的建议改了,还是一样的问题;只返回相同的结果,无论我位于哪个子页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2022-01-06
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多