Zum Inhalt springen

Farbige Menüs

Erstellt am 24. November 2011 · 4 Antworten · letzte Antwort am 25. November 2011

Tags: Frage

Coreblade ·

Hallo zusammen

Ich möchte gerne mein Menü mit Farben versehen. Hierarchiestufe 2 soll die Farbe von Stufe 1 "erben".

1. Hierarchie funktioniert super:

lib.navigation = HMENU
lib.navigation {
  
  maxItems = 7
  
  1 = TMENU
  1 {
    noBlur = 1
    wrap = <ul class="vlist">|</ul>
    NO.wrapItemAndSub = <li>|</li>
    NO.ATagParams = class="red" || class="orange" || class="gold" || class="rose" || class="lightgreen" || class="green" || class="blue"
    
    CUR = 1
    CUR.wrapItemAndSub = <li>|</li>
    CUR.ATagParams = class="red active" || class="orange active" || class="gold active" || class="rose active" || class="lightgreen active" || class="green active" || class="blue active"
    
  }  
}

2: Hierarchie so auch:

lib.subnav = HMENU
lib.subnav {
  
  entryLevel = 1
  
  1 = TMENU
  1 {      
    noBlur = 1    
    NO.wrapItemAndSub = <li>|</li>
    
    CUR = 1
    CUR.wrapItemAndSub = <li>|</li>
    CUR.ATagParams = class="active"
  }
}
[PIDinRootline = 2]
lib.subnav.1.wrap = <ul class="hlist red">|</ul>
[end]
[PIDinRootline = 13]
lib.subnav.1.wrap = <ul class="hlist orange">|</ul>
[end]
[PIDinRootline = 14]
lib.subnav.1.wrap = <ul class="hlist gold">|</ul>
[end]
[PIDinRootline = 15]
lib.subnav.1.wrap = <ul class="hlist rose">|</ul>
[end]
[PIDinRootline = 16]
lib.subnav.1.wrap = <ul class="hlist lightgreen">|</ul>
[end]
[PIDinRootline = 17]
lib.subnav.1.wrap = <ul class="hlist green">|</ul>
[end]
[PIDinRootline = 18]
lib.subnav.1.wrap = <ul class="hlist blue">|</ul>
[end]

Finde das Ganze aber ziemlich hässlich. Hat jemand eine elegantere Lösung?
PS: Die erste Hierarchie ist horizontal, die zweite vertikal.

Gruss Coreblade

Julian.​Hofmann ·

Hallo.

Warum nimmst Du dafür nicht CSS direkt? Wenn das Menü hierarchisch aufgebaut ist, dann tut doch auch:

ul {color: red;}
ul ul {color: orange;}
ul ul ul { ... }

Viele Grüße
Julian

Coreblade ·

Hallo

Das Menü hat nur zwei Ebenen. Die zweite soll einfach die Farbe der Ersten übernehmen. Kann das so wirklich mit CSS gelöst werden? Glaube nicht, oder irre ich mich da?

Gruss Coreblade

Julian.​Hofmann ·

:o Ups, nicht genau gelesen.

Wenn die Navigationsebenen nicht ineinander verschachtelt sind (also Ebene 2 nicht Listen innerhalb der jeweiligen Einträge aus Ebene 1 sind), dann hat die Vererbung nicht hin. Du hast im Moment zwei unabhängige TS-Objekte, die voneinander nichts wissen. Und in HTML hast Du zwei Listen (UL), die ebenfalls keine Info haben, dass sie in einem Verhältnis zueinander stehen (==> via CSS nicht schachtelbar).

In dem Fall dürfte Deine Lösung schon ziemlich die beste sein.
Denkbar wäre noch eine Lösung anhand von CSS-Klassen aus der Seiten-ID. Für Ebene 1 class="p{field:uid}", für Ebene 2 wäre das dann class="p{field:pid}". Damit würdest Du Dir Condiotions und optionSplit sparen, dafür aber "komisch2, nicht so sprechende CSS-Klassennamen bekommen.