• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Aktive Seite = Link Button einfärben...

Dennis

Neues Mitglied
Hallo...

Aktuell habe ich eine Seite mit "divs" erstellt... soweit alles ganz gut und schön. Jedoch sollten sich die Navigations Button... Wenn man sich z.B. auf der Seite Impressum befindet blau einfärben und so bleiben... solange man auf der Seite ist. Klickt man auf "News" soll News blau eingefärbt sein und Impressum wieder den Ursprungszustand haben. Aktuell sind die Buttons alle weiß und werden bei :
Code:
#nav-menu ul li:hover a
 {
 background-color:#b4b4b4;
 text-decoration: underline;
 }

grau... das ist auch ganz nett.. nur wie realisiere ich es, dass der Button blau bleibt, wenn man sich z.B. die Impressum Seite anschaut und beim klicken auf eine andere Seite soll sie wieder weiß werden und der andere Button Blau bleiben. Ich hoffe ihr habt mein Problem soweit verstanden... insgesamt denke ich, dass es recht simpel ist...

dennisneubacher.de <- Die Seite... falls jemand es sich live anschauen will.

Navigation :
Code:
<div id="nav-menu">
 <ul>
 <li><a href="index.php?page=news">News</a></li>
 <li><a href="index.php?page=gaestebuch">G&aumlstebuch</a></li>
 <li><a href="index.php?page=entwicklung">Entwicklung</a></li>
 <li><a href="index.php?page=downloads">Downloads</a></li>
 <li><a href="index.php?page=kontakt">Kontakt</a></li>
 <li><a href="index.php?page=impressum">Impressum</a></li>
 </ul>
 </div>

Content wird im DIV so abgefragt :
Code:
<?php
    if (isset($_GET["page"]))
      $page = $_GET["page"];
    else
      $page = "news";

    switch ($page)
    {
       case "news":  $file = 'inc/news.inc.php'; break;
       case "gaestebuch":  $file = 'inc/gaestebuch.inc.php'; break;
       case "entwicklung":  $file = 'inc/entwicklung.inc.php'; break;
       case "downloads":  $file = 'inc/downloads.inc.php'; break;
       case "kontakt":  $file = 'inc/kontakt.inc.php'; break;
       case "impressum":  $file = 'inc/impressum.inc.php'; break;
       default: $file = 'inc/content/news.inc.php'; break;
    }

 include "$file";
?>
 
Oder in das Switch-Case einbauen:

HTML:
<div id="nav-menu">
 <ul> 
     <li class="<?php echo $news; ?>">
        <a href="index.php?page=news">News</a>
    </li> 
</ul>
 </div>

PHP:
$news = "";

switch ($page)  {
       case "news":
          $file = 'inc/news.inc.php';
          $news = "active";
           break;
 }

CSS:
Code:
.active {
    background: blue;
}
 
Code:
 <?php
        if ($PHP_SELF != "index.php?page=news")
          echo "<li>";
        else
          echo "<li id='aktiv'>";
        ?><a href="index.php?page=news">News</a></li>


Code:
#aktiv
{
background-color:black;
}


das habe ich eben probiert... leider ohne erfolg :/ was ist daran falsch?
 
ups.. vergiss meine Lösung... ich habe weder das was Du da gepostet hast, noch was ich dann gepostet habe, richtig durchgeguckt.
 
@tronjer : hab ich eben probiert einzubauen... :D danach ging die ganze seite nicht mehr... ich glaube ich stelle mich etwas zu dumm an (:
 
Was funktioniert denn nicht? Der Grundgedanke war, die Hintergrundfarbe des "aktiven" Buttons in eine CSS-Klasse auszulagern und diese über eine PHP-Variable auszugeben.
 
Es lädt einfach nichts mehr... nur noch weiß die Seite :/ Vllt habe ich mich auch irgendwo vertippt.. ich probiere es gleich nochmal aus. Diese Lösung funktioniert sicher ja ?
 
Ich hatte vorhin ein ">" vergessen gehabt :( Jedenfalls.. nimmt er jetzt wohl alles an... ich hab das ganze für den ersten Button angepasst (News).

Jedoch keine Veränderung.. der Button wird nach wie vor Blau...


CSS Navi ->
Code:
 #nav-menu
 {
 width:57em;
 margin:auto;
 text-align:center;
 }

  .active
 {
 background:blue;
 }

 #nav-menu ul
 {
 list-style: none;
 padding: 0;
 margin: 0;
 }

 #nav-menu li
 {
 float: left;
 background-color:white;
 margin: 0 0.15em;
 color:black;
 }

 #nav-menu li a
 {
 height: 2em;
 line-height: 2em;
 float: left;
 width: 9em;
 display: block;
 border: 0.1em solid blue; <!--#dcdce9-->
 color: #0d2474;
 text-decoration: none;
 }

 #nav-menu ul li:hover a
 {
 background-color:#b4b4b4;
 text-decoration: underline;
 }


 /* Hide from IE5-Mac \*/
 #nav-menu li a
 {
 float: none;
 color:black;
 }
 /* End hide */


Content ->
Code:
  switch ($page)
    {
       case "news":
       $file = 'inc/news.inc.php';
       $news = "active";
       break;

Navigation ->
Code:
 <li class="<?php echo $active; ?>"><a href="index.php?page=news">News</a></li>
 
Wird denn die CSS-Klasse im HTML ausgegeben?

Falls nein, dann deklariere die Variable gleich mit dem richtigen Wert und streiche sie dafür aus dem Switch-Case.
 
Das nennt man Fehlereingrenzung. ;)

Die Variablennamen sollten schon übereinstimmen.

HTML:
<?php
$news = "active";

<li class="<?php echo $news; ?>"><a href="index.php?page=news">News</a></li>
 
Hoppla... funzt aber iwie trotzdem nicht.. :/

Navigation.inc.php ->
Code:
 <li class="<?php echo $news; ?>"><a href="index.php?page=news">News</a></li>

index.php ->
Code:
    switch ($page)
    {
       case "news":
       $file = 'inc/news.inc.php';
       $news = "active";
       break;

style.css ->
Code:
  .active
 {
 background-color:blue;
 color:#ffffff;
 }
 
iwie == null.

Was genau funktioniert nicht? Die Ausgabe der Klasse im HTML? die Style-Zuweisung per CSS? Hast du es mal so versucht, wie ich es vorigen post geschildert hatte?


Du könntest auch so etwas in den Link schreiben:
HTML:
<li class="<?php $active = $_GET['page'] === 'news' ? 'active' : ''; echo $active; ?>"><a href="index.php?page=news">News</a></li>

Oder daraus eine foreach Schleife bauen, die alle Listenelemente durchläuft.


Aber etwas Eigeninitiative musst du schon bringen, funzt nicht reicht nicht.
 
Zurück
Oben