Anleitung Priorisierung von CSS-Selektoren erklärt

Thema wurde von Moritz (Gambio), 11. August 2013 erstellt.

  1. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Elemente aus einer HTML-Seite können mittels CSS gestaltet werden. Elemente werden über so genannte CSS-Selektoren angesprochen. Wenn mehrere Selektoren dasselbe Element ansprechen, stellt sich die Frage, welcher die höchste Priorität hat. Das Prinzip ist simpel, vielen aber unbekannt. Hier die Priorisierung von hoch nach niedrig:

    • ID (z. B. #id)
    • Klasse (z. B. .class)
    • HTML-Tag (z. B. div)

    Außerdem ist die Anzahl des jeweiligen Typs entscheidend, wobei man durch eine höhere Anzahl nur innerhalb des eigenes Typs höher priorisiert. So ist z. B.

    #id #id2 .class1 div

    höher priorisiert als

    #id .class1 .class2 .class3 div

    Einfacher wird es zu verstehen, wenn man sich eine Nummer im Format ID.Klasse.HTML-Tag vorstellt:

    #id #id2 .class1 div = 2.1.1
    #id .class1 .class2 .class3 div = 1.3.1
    .class2 .class3 = 0.2.0
    .class1 div = 0.1.1
    div a = 0.0.2

    Noch höher priorisiert sind inline-styles (style-Attribut im HTML-Tag: <div style="color: yellow;">). Die allerhöchste Priorität haben CSS-Attribute mit !important Zusatz. Ein Beispiel:

    Priorität: 0.1.2
    .class1 div a {
    color: blue;
    font-size: 20px;
    }

    Priorität: 0.0.1
    a {
    color: red !important;
    font-size: 10px;
    }

    Der Link-Text hat die Schriftgröße 20px und die Farbe rot. Mit !important sollte man meiner Meinung nach nur arbeiten, wenn es nicht möglich ist einen höher priorisierten Selektor zu bauen.

    Mehr Informationen und Beispiele:
    http://www.w3.org/TR/css3-selectors/#specificity
    http://css-tricks.com/specifics-on-css-specificity/
    http://www.vanseodesign.com/css/css-specificity-inheritance-cascaade/