Aloha
Ja und Nein. Die if-Abfrage ist richtig, die Geschichte mit den Klassen nicht. Bedenke: ob auf- oder zugeklappt entscheidet keine Klasse, sondern der Status der Radiobuttons.
So, ich dachte zwar ich hätte das mit den Radiobuttons und den Checkboxes noch richtig in Erinnerung... aber dem war nicht so. Hab mich jetzt nochmal in die Themen eingelesen (auf dieser wunderbaren Seite ;) ) und jetzt versteh ich auch wieder, warum du von Anfang an so viel Wert auf RADIO statt CHECK gelegt hast:
„Alle Radio-Buttons, die den gleichen Namen haben, gehören zu einer Gruppe, d.h. von diesen Buttons kann der Anwender genau einen markieren. “
vs.
„Alle Checkboxen, die den gleichen Namen haben, gehören zu einer Gruppe, d.h. von diesen Elementen kann der Anwender keines, eines oder mehrere ankreuzen.“
Checkboxen bleiben alle auf... Radiobuttons gehen zu, wenn ein anderer gewählt wird.
:)
CSS:
.hackbox {display:none;}
ul ul { display:none; }
.hackbox:checked ~ ul { display:block; }
> Du erhältst: Alle ul, die in einer ul stehen, sind ausgeblendet. Alle ul, die neben einer angewählten .hackbox stehen, sind eingeblendet. Das Anwählen der .hackbox erfolgt über das Anklicken des Labels, die Radiobuttons selbst sind unsichtbar.
Hab deine Codeentwürfe eingebaut... funktioniert ohne grafische Optimierungen soweit erstmal ganz hervorragend. Dankeschön!
Frage: das habe ich schon richtig verstanden - solange man nur im Menü rumklicked und keine neue Seite wählt, bleiben Radiobuttons des gleichen Namens ausgewählt. Also wenn ich im "Untermenü 1" das "Unteruntermenü 1" aufklicke und danach das "Untermenü 2" wähle, also das "Untermenü 1" wieder zuklappt... und dann wieder "Untermenü 1" anklicke, dann ist dort bereits das zuvor angeklickte "Unteruntermenü 1" als Vorauswahl geöffnet.
Ich denk mal, das ist technisch nicht vorgesehen, dass man Radiobuttons einer untergeordneten Ebene "unchecken" kann, wenn man eine übergeordnete Ebene anklickt.
> Noch eins - mach dir Gedanken über Effizienz. Die Navi aus einzelnen php-Segmenten zusammenbauen zu lassen, die du alle in Handaebeit schreibst, ist nicht sinnvoll. Bilde stattdessen besser deine Navigationsstruktur in einem multidimensionalen Array ab und lass deine Navigation daraus in einem Zusammenspiel aus rekursiven Funktionen und Schleifen erstellen. Wenn du das nicht eh schon machst und den Code hier nur eingestampft hast ;)
Ja, da sprichst du was an...
:)
Ich sags mal so: als ich die Seite ursprünglich mit PHP, HTML, CSS aufgebaut habe, im Jahre 2008, war ich selber noch an der Uni und hatte sehr viel Zeit mich mit all diesen Programmier- und Scriptsprachen zu beschäftigen. Damals war das Menü selbst auch noch sehr überschaubar, deshalb hat es sich nicht gelohnt für die paar Punkte eine rekursive Funktion zu schreiben.
Nach dem Studium war dann keine Zeit mehr für solche Sachen bzw. wenn man ja ein bestehendes, funktionierendes Menü hat, ist es dann natürlich einfach und bequem, wenn man eine neue Seite einfach mit einer neuen Zeile <li>...</li> einbauen kann...
:)
MfG,
--
JPL