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

class & id - Frage

hokage555

Neues Mitglied
Hi Leute

folgender Code:

PHP:
<ul id="navi">
    <li><a <?php if(strcmp($id,"home") == 0 ){ echo " id=\"aktiv-h\"";} ?> class="home" title="Home" href="home.php?id=home">Home</a></li>
    <li><a <?php if(strcmp($id,"begriffsklaerung") == 0 ){ echo " id=\"aktiv-b\"";} ?> class="begriffsklaerung" title="Begriffsklärung" href="begriffsklaerung.php?id=begriffsklaerung">Begriffsklärung</a></li>
    <li><a <?php if(strcmp($id,"auswirkungen") == 0 ){ echo " id=\"aktiv-a\"";} ?> class="auswirkungen" title="Auswirkungen" href="auswirkungen.php?id=auswirkungen">Auswirkungen</a></li>
    <li><a <?php if(strcmp($id,"wissenschaftler") == 0 ){ echo " id=\"aktiv-w\"";} ?> class="wissenschaftler" title="Wissenschaftler" href="wissenschaftler.php?id=wissenschaftler">Wissenschaftler</a></li>
    <li><a <?php if(strcmp($id,"extras") == 0 ){ echo " id=\"aktiv-e\"";} ?> class="extras" title="Extras" href="extras.php?id=extras">Extras</a></li>
    <li><a <?php if(strcmp($id,"gaestebuch") == 0 ){ echo " id=\"aktiv-g\"";} ?> class="gaestebuch" title="Gästebuch" href="gaestebuch.php?id=gaestebuch">Gästebuch</a></li>
</ul>
Wie ihr seht erstelle ich mit PHP eine dynamische id, weche immer nur bei dem Link eingefügt wird, welcher gerade geöffnet (aktiv) ist.

Das Problem ist, dass ich allen Links aber auch eine normale Formatierung über id's zukommen lassen müsste. Da ich so bei der aktiven Seite dann aber 2 ID's hätte, was nicht geht, habe ich mich für die semantisch falschen Klassen entschieden.

Ich meine mich erinnern zu können, dass man Id's 2 Werte zuweisen kann, wenn man das so schreibt:

Code:
id="home, aktiv-h"
Stimmt das? Wenn ja, dann könnte ich meine Navigation doch so aufbauen, oder?

PHP:
<ul id="navi">
    <li><a id="home<?php if(strcmp($id,"home") == 0 ){ echo ", aktiv-h";} ?>" title="Home" href="home.php?id=home">Home</a></li>
</ul>
Danke schonmal für alle Antworten.

grüße hokage
 
Werbung:
Du verwechselst das mit class="foobar example". IDs sind einmalig im Dokument und ein Element kann nur eine haben.
 
Es gibt dann also keine andere Lösung?

Denn semantisch ist die Verwendung von ner Klasse ja trotzdem falsch. Auch, wenn es funktioniert.
 
Werbung:
Jo so könnte ich das lösen.
Dann muss ich nur meine CSS Id's wieder mit anderen Eigenschaften füllen.
Na ja, den Aufwand nehme ich dann mal auf mich ;-)

grüße hokage
 
Werbung:
Der Gedanke ist wohl, dass immer nur ein Hauptmenüpunkt gleichzeitig aktiv sein kann, also ein Element pro Seite aktiv ist. Es ist aber durchaus vorstellbar, ein aktives Element im Haupt- und eins im Untermenü zu haben, also ist die Verwendung einer Klasse hier semantisch einwandfrei.

Ein anderer interessanter Ansatz ist übrigens das Vergeben einer id an den body, wie hier auf englisch beschrieben: ID Your Body For Greater CSS Control and Specificity | CSS-Tricks

Gruß
Junny
 
Es gibt auch keine Vorschrift, ob man ein Element über eine ID identifiziert oder eine Klasse.
Eine Klasse kann an mehreren Stellen eingesetzt werden.

Wenn ich eine Klasse ".important" oder ".wichtig" nenne, dann kann ich die durchaus dem einzigen aktiven Menüpunkt zuweisen, wie aber auch einem <em>. Da bin ich nicht zu irgendwas gezwungen.
Eine ID oder eine Klasse zu setzen, ändert nichts an der Semantik.
Aber der Name einer ID oder Klasse kann semantischer Natur sein und sollte es auch. Denn wenn ich ein Element mit der Klasse "left" versehe und dieses Element dann auf die rechte Seite verschieben will, hab ich den Salat. Sinn bei solchen Layoutänderungen soll ja sein, dass man nur noch eine Änderung im Stylesheet machen muss.
 
Zurück
Oben