【问题标题】:How do I dynamically insert a CSS class using PHP?如何使用 PHP 动态插入 CSS 类?
【发布时间】:2011-05-31 12:48:28
【问题描述】:

以下代码有什么问题?我想在单击相应的<li> 元素时动态插入“当前”CSS 类。谢谢!

<?php 
$pg = $_SERVER['PHP_SELF']; 
?>

<section>
    <aside>       
        <nav>
            <ul>
                <li class="<?php if($pg == 'index.php?page=about.php'){echo 'current';} ?>"><a href="index.php?page=about.php">About</a></li>                       
            <li class=""><a href="">Services</a></li> 
            </ul>
        </nav>
    </aside>
<section>

【问题讨论】:

  • 这是一个 HTML 类。没有 CSS 类这样的东西。该术语有时被用来表示“规则集”、“类选择器”、“任何选择器”和“属性”。这很令人困惑,所以请不要使用这个词。
  • 你的意思是当用户点击它时,你想给元素添加一个类,即在客户端?
  • 语法看起来不错,我会将 $pg 回显到页面上,它可能不是您所期望的,这样您就可以满足您的条件需要。
  • $_SERVER['PHP_SELF'] 返回完整的工作目录(/public_html/ 之后的所有内容)
  • 你可以试试这个,添加 if 语句并将值分配给几个变量/或一个变量。然后在 html 代码中,将 php 变量添加到类部分,例如 -

标签: php css


【解决方案1】:

尝试:

<?php 
$pg = $_GET['page'];

$allow = array('about.php', 'main.php', 'other.php');
if ( !in_array($pg, $allow) ) {
    $pg = 'default_value';
}
?>

<section>
    <aside>       
        <nav>
            <ul>
                <li class="<?php if($pg == 'about.php'){echo 'current';} ?>"><a href="index.php?page=about.php">About</a></li>                       
            <li class=""><a href="">Services</a></li> 
            </ul>
        </nav>
    </aside>
<section>

【讨论】:

  • +1 但你也可以向他解释他的方法可能存在的安全漏洞。
  • 您可以使用最新的数组语法代替$maybe = array(...) 您可以使用$yes = [...]
【解决方案2】:
<li class="<?php echo ($_GET['page'] == 'about.php')? 'current' : 'normal'; ?>">
  <a href="index.php?page=about.php">About</a>
</li>

【讨论】:

    【解决方案3】:

    $_SERVER['PHP_SELF'] 不返回 $_GET 变量 (?page=about.php)

    【讨论】:

      【解决方案4】:

      $_SERVER['PHP_SELF'] 将以/ 开头,并且不包含查询字符串。

      你应该改用$_GET['page']

      【讨论】:

        【解决方案5】:

        如果您在运行时寻找 clicked,您需要 javascript 而不是 php。像这样使用 jQuery 的东西会为你工作:

        $(document).ready(function(){
            $('nav >ul li').click(function(){
                //remove all current classes
                $('.current').removeClass('current');
                $(this).addClass('current');
            });
        });

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-25
          • 1970-01-01
          • 2017-07-23
          • 2023-03-22
          • 2014-01-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多