目的:若页面内容是当前页面,就对导航栏的锚点文字应用"current"样式不知PHP中应该怎么写?用图片描述我要的效果可能更清楚直观点:
我要实现的效果是: 用户鼠标点击“小游戏”页面,导航栏上就成这个样子:点击“博客”时,则成这样:已经想到的逻辑:我的网站导航栏是用的一个公共文件:head.php,里面已经写好了所有的导航栏,网站的每个页面都要引用它。    我给网站的每个页面都赋值一个页面id,然后在公共文件“head.php”中获取这个页面id,当这个id和页面相符时,就给相应的导航加上背景色。

解决方案 »

  1.   

    刚开始看PHP,很多东西不会,请大神们多多指教
      

  2.   

    能想到的想法是:在head.php中,根据页面id,预制一个样式:
    <?php
        echo "<style>." & page_id & " {color:red; /*这里是具体的current样式*/}</style>";
    ?>然后每个导航栏:
    <ul id="navmenu">
       <li class="101"><a href="../">HOME</a></li>
       <li class="102"><a href="../co">About</a></li>
    </ul>但是那段预制样式的写法调试半天不知怎么写才正确。那是ASP的写法
      

  3.   

    如果这个要PHP去实现,那就太绕弯子了。
      

  4.   

    这是css的事情,具体的学习一下jquery的导航插件吧,茫茫多.
      

  5.   

    lz 我直接告诉你到达这个效果用这个jquery插件 jqueryTabs.js  非常简单 
      

  6.   

    哦~~  如果你这是导航的话~  简单点话就是每个li 里面判断url是不是这个的url
      

  7.   

    在CSS里面定义好CURRENT的样式,然后在PHP里面判断页面ID来指定<li>的样式,我觉得这没有绕弯子啊,比用插件来得简单,也比插件高效。PHP在这里只需要一行或者两行代码而已
      

  8.   

    CSS里面只是定义导航栏的样式,这我知道。在公共文件里,对当前页面ID做个判断,然后用PHP传值即可解决问题,为啥非得用导航插件?导入插件越多,对服务器的负载就越重,我是能用简单的代码搞定,就不想引入过多的插件。
      

  9.   

    backgroup的float ul,block的a,没了。
      

  10.   

    能说详细点吗?CSS部分是没问题的,现在问题的难点在于PHP的判断
      

  11.   


    准备两个class,分别不同的css,PHP设置一下class就行了。
      

  12.   

    你这比我自己的思路更复杂了吧?我的思路是:获取页面id号码,然后写一个变量式的style:"style+page_id"并对其定义CSS样式,然后在后面的<li>中全部写上<li CLASS=styleXXX>.只是定义变量CSS样式的正则怎么写,我不太懂。ASP中倒是有办法
      

  13.   

    跟php半毛关系都没有。给个实例参考一下:
    <script> 
    function init(){
       var es=document.getElementById('demo').getElementsByTagName('li');
       var e=null,len=es.length;
           for(var i=0;i<len;i++){
          e=es[i];
      e.onclick=function(){
            for(var j=0;j<len;j++){
           if(es[j].id==this.id) es[j].className='current';
       else  es[j].className='';
    }
      }
       }
       }
       
    window.onload=init;   
     
    </script>
    <style>  .navmenu li{
           float:left;
           width:40px;
       margin-left:40px;
       text-decoration:none;
       }
         .navmenu li a{
           
       text-decoration:none;
       }   .current a{
           color:red;
       tex
       }
    </style>
    <ul class="navmenu" id="demo">
      <li class="current" id="home"><a href="#">HOME</a></li>
      <li class="" id='about'><a href="#">About</a></li>
      <li class="" id='contact'><a href="#">Contact</a></li>
    </ul>
      

  14.   


    你这仅仅实现了手动指定当前HOME样式。这个还真与PHP有关系,等我实现后,把代码写出来,比你这实例的实现语句条数至少少90%
      

  15.   

    已经在另外一帖完成了此需求。现在贴代码:1,在每个.php页面,定义页面id:page_id,其值在以下几个数字的范围内:101,102,103......
    2,以上的每个页面,都要包含一个外部导航栏文件:h.php。
    ----以上两句的PHP代码如下:
    <?php 
     $page_id=101;
     require("inc/h.php");
    ?>
    3,在h.php文件中,定义一个的样式,其名称用变量定义,写法如下:
    <style>
    <?php
    echo <<<CSS
    style$page_id
    {
        background:url(../imgs/nav_bg1.gif) no-repeat 0 0;  
        font-weight:bold;  
        color:#fff;
    }
    CSS;
    ?>
    </style>
    4,在h.php的页面导航栏,如下写:
    <ul>
      <li class="style101"><a href="home.php">Home</a></li>
      <li class="style102"><a href="about.php">About</a></li>
      <li class="style103"><a href="help.php">Help</a></li>
    </ul>
    ====实现了目的:不同的页面,<li>内获得的class名称不一样,自然也就实现了楼主之前图片描述的需求!-------------楼上几位说我这种实现逻辑比你们引入神码插件,无论是效率上还是代码精简度上是不是简单好几公里???此帖结贴。无满意答复,基本全是来耍嘴皮子的,没人有资格得分!!!
      

  16.   

    如果有十个页面,每个页面都定义一个 $page_id 变量 ,这就是你所认为的高效率??
      

  17.   

    本帖最后由 PhpNewnew 于 2012-07-07 08:55:52 编辑
      

  18.   


    谢谢指教,你的知识确实丰富,可惜过于固化:我从一开始就说了自己的这种逻辑,并没有要引入插件,只是求一写法而已,是你们没有好好了解需求,就自作主张,而且明显带有“讥讽”意味,太不能容人了,不知道你们为啥这样子,之前我在ASP那边请教过多次问题,还没有遇到一次类似PHP这边的这些人的情况的。另外,要是你直接用<a href='xxxx'>首页</a>都能实现我要的效果,那我真的要请你赶紧这样实现,今年的诺贝尔将专门为你设计一个奖项。
      

  19.   

    你不是要简单么?我就是告诉你怎么样简单.
    至于什么php 就怎么 asp 就怎么 那么你去看看是不是php都这样,还是你碰到了这样.俗话说 一个巴掌拍不响.