Ich seh den Code vor lauter Tags nicht mehr

  • Hallo zusammen,
    ich bastel mir grad ein Joomla-Template und stoße grad auf ein kleines Problem.
    Eigenltich ist das Thema ja Kindergarten, aber ich schein irgendwo einen Denkfehler zu haben, oder den Code vor lauter Tags nciht mehr zu sehen.


    Hier mal der Teil in HTML5:



    Im Endefekt soll ein Contentbereich angezeigt werden in dem Links und rechts zwei Menüs angezeigt werden, die von der Formatierung gleich sind (aber von den Verweisen natürlich nicht ;))
    Dazwischen ist ein "article" für den Content.


    Das klappt auch gut. Nur habe ich das Problem, dass ich die Links nicht formatiert bekomme.
    Ich hab schon einige Varianten von selektoren ausprobiert, aber bei keiner dieser passiert was.


    Hier ein paar meiner Selektoren-Versuche:


    Code
    #menu_left .menu ul{
         	list-style-type: none;
         	width: 220px;
    }


    Code
    #menu_left .menu{
         	list-style-type: none;
         	width: 220px;
    }


    Code
    .menu{
         	list-style-type: none;
         	width: 220px;
    }


    Vielleicht könnt ihr mir ja helfen. Sollte ja eigentlich nicht so schwer sein, aber manchmal sieht man den Fehler leider selber nicht ^^


    Liebe Grüße


    Nine :)

  • Guck mal hier: Aufgeräumter Beispiel Code, und das Ergebnis in Gross
    Ich habe deinen Code genommen und ein wenig verändert, zudem ist CSS mit ganz grundlegenden Spielereien dabei um zu zeigen, wie man im DOM die Dinge anspricht.
    Natuerlich ist das jetzt nicht optimal, aber es soll auch erstmal aufzeigen, wie man sich durch das HTML hangelt ...


    Ich hoffe, das hilft dir weiter ;)

  • Guter Punkt mit dem HTML, ich hätte aber noch aside und main-Elemente genutzt.
    Die Frage zur CSS-Architektur ist aber auch nicht zu unterschätzen, leider neigen sehr viele zur Überspezifikation.


    Da Browser Selektorketten von rechts nach links lesen ist es möglichst wichtig,
    auch um für schnellere CSS-Dateien zu sorgen, die so kurz und präzise wie möglich zu halten.
    Ein Beispiel:

    CSS
    ul#main-navigation ul a { ... }


    Für den menschlichen Verstand ist es wohlmöglich logisch hier wie folgt vorzugehen:
    Suche ein ul mit ID 'main-navigation' ->
    -> Suche eine verschachtelte Liste ->
    -> Suche verschachtelte a-Elemente ->
    -> OK, nun die Eigenschaften und Werte


    Für Browser ist es jedoch wichtig, möglichst schnell auszumachen wann eine Regel nicht zutrifft.
    Je mehr ein Browser arbeiten muss um die Informationen zu verarbeiten und zu rendern,
    desto länger dauert es bis ein Resultat zu sehen ist - und das will keiner.


    Wenn also mit dem Selektor ganz rechts begonnen wird, besteht eine direkte Übereinstimmung mit dem "Ziel-Selektor"
    und dem vorliegenden HTML-Element. Der Browser sucht also erst alle a-Elemente, dann filtert er die a-Elemente welche in ul-Tags liegen, ... usw.


    Kurz: Die Wahrscheinlichkeit dass eine Regel nicht zutrifft ist deutlich höher, wenn vom Ziel-Selektor ausgegangen wird um nach einem möglichen Elternelement zu filtern.
    Vorteilhaft wäre es also für die verschachtelte Liste eine Klasse anzulegen um die Selektorkette zu kürzen - zum Beispiel so:

    CSS
    .sub a


    Um zurück auf deine Frage zu kommen ...
    Du solltest CSS-Regeln so abstrakt wie möglich halten, sodass du sie auch wiederverwenden kannst wenn es nötig ist.
    Wenn du mehrere Navigationselemente gleich gestalten willst macht es Sinn, lediglich '.menu a' zu nutzen (du willst ja die Links bearbeiten).
    Wenn du dann Werte dieser Klasse überschreiben willst kannst du veschachteln sodass die Regeln nur auf die gewünschte Navigation zutreffen z. B. '.main-header .menu a'


    Um zu überschreiben muss die neue Regel aber unterhalb der Originalregel stehen.



    Hier noch meine 4 persönlichen Merkpunkte zur CSS-Architektur:

  • @Az.: Stimmt natuerlich alles, mein Beispiel sollte auch eher aufzeigen, WIE man die Dinge richtig verschachtelt und jetzt nicht direkt so abstrakt wie moeglich sein.
    Denn ich habe die Erfahrung gemacht, dass es (fuer mich) einfacher ist, von konkret zu abstrakt zu lernen ;)

  • Ich rede auch nicht vom HTML :)
    Nur ist es leichter, finde ich, wenn man erst versteht, wie man die CSS Selektoren nacheinander anreiht, um sich durch das DOM zu hangeln, um danach dann zu abstrahieren. War bei mir zumindest so :D

  • Hallo ihr beiden.
    Danke für die netten Antworten.
    Ich habe meinen Code auch mal entsprechend des Vorschlags von The Scout umgebaut.
    Doch leider klappt es immernoch nicht.
    Ich steh wahrscheinlich grad nur auf dem Schlauch -.-


    Ich habs auch mal, so wie ich es im Moment habe, ins JSFiddle geladen.


    Welpenhilfe


    Liebe Grüße

  • Hi, ich habe mal ein bischen drübergearbeitet..
    Fertige Seite
    Der Code


    hier der code:



    Ich hoffe es hilft dir ;)


    EDIT: ..noch ein Tip, ich würde von den festen Breiten mich loslösen ..! nicht jeder hat ein 1050px breites Display und horizontal scrollen ist nervig!


    CSS
    section{
       width: 90%;
       min-width: 700px;
       max-width: 2000px;
    }
  • Hallo,


    dankeeuch für die liebe Hilfe :)
    Ein guter Freund von mir ist Mediengestalter und wurde auch gezwungen mal zu schauen ;)
    Er hat meinen Fehler gefunden. Jetzt klappt es. ( "]" statt "}" -.-)
    Eure Tips schaue ich mir aber natürlich auch alle mal an :)


    Liebe Grüße


    Nine

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!