SlideShare ist ein Scribd-Unternehmen logo
1 von 20
München, den 21. Juli 2011 CSS-SPEZIFITÄTPunktgenaue Ansprache Ralf Richtsteiger, ralf.richtsteiger@peppermind.de
2 	01Die Kaskade 02Gewichtung und Ursprung 03Spezifität von Selektoren - Einführung in das Punktesystem 04Spezifität erhöhen - Nachfolgeselektoren, Klassen & Ids 05Spezifität erhöhen - Beispiel 06!important 07Künstliche Steigerung der Spezifität 08Tipps 		Ressourcen INHALT
01 DIE KASKADE Vorgehen der Prüfung und Festlegung von Stylesheets: Browser erstellt anhand des HTML-Quellcodes das DOM Browser durchläuft das DOM und sucht passende CSS-Eigenschaften und deren Wert Prozess der Wertzuweisung berücksichtigt vier verschiedene Stufen Stufe 1 – Gewichtung Stufe 2 – Ursprung Stufe 3 – Spezifität Stufe 4 – Reihenfolge Grundlage zur Vermeidung von Konflikten verschiedener Stylesheets 3
02 GEWICHTUNG & URSPRUNG Ursprung – wo kommt das Stylesheet her Browser-Stylesheet Benutzer-Stylesheet – vom User im Browser getätigte Einstellungen Autoren-Stylesheet Gewichtung – welches Stylesheet hat welche Priorität Browser-Stylesheet – niedrigste Priorität Benutzer-Stylesheet Autoren-Stylesheet	 Autoren-Stylesheet mit !important Benutzer-Stylesheet mit !important – höchste Priorität Benutzer (z. B. mit körperlichen Beeinträchtigungen) haben das letzte Wort! 4
03 SPEZIFITÄT VON SELEKTORENEinführung in das Punktesystem	 leicht verständliches Punktesystem mit vier per Komma getrennten Zahlen Gruppe A inline-Styles: <p style=“color:red;“> Spezifität: 1,0,0,0 – Punkte: 1000 Gruppe B ID: #red Spezifität: 0,1,0,0 – Punkte: 100 Gruppe C Klasse, Pseudoklasse oder Attributselektor: .red Spezifität: 0,0,1,0 – Punkte: 10 Gruppe D Typ-Selektor oder Pseudoelement: p Spezifität: 0,0,0,1 – Punkte: 1 5
04 SPEZIFITÄT VON SELEKTORENEinführung in das Punktesystem	 ,[object Object]
verschiedene Selektoren können beliebig miteinander kombiniert werden
seit CSS 2.1
Spezifität 1,0,0,0 – vorher ID & style gleichwertig
Berücksichtigung der Pseudoelemente
Inline-Styles vermeiden
unflexibel, da nur durch !important-Regel überschreibbar
Widerspruch zum Prinzip HTML & CSS – Trennung von Inhalt & Gestaltung6
05 SPEZIFITÄT ERHÖHEN Einfaches Beispiel HTML <p id=„check“ class=„error“>Ich bin eine Fehlermeldung</p> Spezifitäten im Überblick 7
05 SPEZIFITÄT ERHÖHENNachfolgeselektoren, Klassen & IDs HTML <link rel=„stylesheet“ type=„text/css“ href=„color.css“ /> <link rel=„stylesheet“ type=„text/css“ href=„font.css“ /> <div class=“error“>   <p>Ich bin eine Fehlermeldung</p>   <p class=„info“>Ich bin eine Zusatzinformation</p> </div> CSSp.info{ color:green; }   /* color.css*/.error p { color:red; }   /* font.css */ Problem: Infotexterscheint rot anstatt dem gewünschten Grün Erklärung Spezifität beider Selektoren ist 0,0,1,1 und damit gleichwertig letzte Regel der Kaskade tritt in Kraft (Reihenfolge) – zuletzt definierte Anweisung wird ausgeführt 8
SPEZIFITÄT ERHÖHENNachfolgeselektoren, Klassen & IDs 05 HTML <link rel=„stylesheet“ type=„text/css“ href=„color.css“ /> <link rel=„stylesheet“ type=„text/css“ href=„font.css“ /> <div class=“error“>   <p>Ich bin eine Fehlermeldung</p>   <p class=„info“>Ich bin eine Zusatzinformation</p> </div> CSSp.info{ color:green; } /* color.css */.error p { color:red; } /* font.css */ Lösung: Erhöhung der Spezifität durch Verwendung eines Nachfolgeselektors:div p.info { color:green; } /* color.css */ Erklärung Spezifität erhöht auf 0,0,1,2 und ist daher höherwertig – der Infotext erscheint grün 9
SPEZIFITÄT ERHÖHENNachfolgeselektoren, Klassen & IDs 05 Durch Nachfolgeselektoren, Nutzung von CSS-Klassen und IDs kann die Spezifität erhöht werden. Beispiel: ,[object Object]
höhere Genauigkeit durch komplexe Selektoren, dadurch aber auch höhere Fehleranfälligkeit10
06 !IMPORTANT ,[object Object]
könnte als Gruppe 0 betitelt werden

Weitere ähnliche Inhalte

Ähnlich wie CSS-Spezifität - Punktgenaue Ansprache

Formulare // MM 08-11
Formulare // MM 08-11Formulare // MM 08-11
Formulare // MM 08-11Noël Bossart
 
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...kaftanenko
 
Volkskrankheit "Stiefmuetterliche Indizierung"
Volkskrankheit "Stiefmuetterliche Indizierung"Volkskrankheit "Stiefmuetterliche Indizierung"
Volkskrankheit "Stiefmuetterliche Indizierung"Markus Winand
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
Agiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesAgiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesDominik Hirt
 
DACHNUG50 LeapTippsAndTricks.pdf
DACHNUG50 LeapTippsAndTricks.pdfDACHNUG50 LeapTippsAndTricks.pdf
DACHNUG50 LeapTippsAndTricks.pdfDNUG e.V.
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...predic8
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsVerein FM Konferenz
 
2 - Sprachen Des Semantic Web - XML
2 - Sprachen Des Semantic Web - XML2 - Sprachen Des Semantic Web - XML
2 - Sprachen Des Semantic Web - XMLSteffen Schloenvoigt
 
Top 10 Internet Trends 2000
Top 10 Internet Trends 2000Top 10 Internet Trends 2000
Top 10 Internet Trends 2000Jürg Stuker
 
Data element constraints for DDB (DDB 2021)
Data element constraints for DDB (DDB 2021)Data element constraints for DDB (DDB 2021)
Data element constraints for DDB (DDB 2021)Péter Király
 
Legacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenLegacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenPhilipp Burgmer
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und StandardsJakob .
 
Anatomie von AdWords Scripts - Einführung
Anatomie von AdWords Scripts - Einführung Anatomie von AdWords Scripts - Einführung
Anatomie von AdWords Scripts - Einführung 📊 Markus Baersch
 
Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...
Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...
Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...Matthias Stürmer
 
Jpgraph - eine Einführung
Jpgraph - eine EinführungJpgraph - eine Einführung
Jpgraph - eine Einführungfrankstaude
 
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006Sven Haiges
 

Ähnlich wie CSS-Spezifität - Punktgenaue Ansprache (20)

Formulare // MM 08-11
Formulare // MM 08-11Formulare // MM 08-11
Formulare // MM 08-11
 
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
 
Volkskrankheit "Stiefmuetterliche Indizierung"
Volkskrankheit "Stiefmuetterliche Indizierung"Volkskrankheit "Stiefmuetterliche Indizierung"
Volkskrankheit "Stiefmuetterliche Indizierung"
 
XHTML
XHTMLXHTML
XHTML
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
Agiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesAgiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific Languages
 
DACHNUG50 LeapTippsAndTricks.pdf
DACHNUG50 LeapTippsAndTricks.pdfDACHNUG50 LeapTippsAndTricks.pdf
DACHNUG50 LeapTippsAndTricks.pdf
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
2 - Sprachen Des Semantic Web - XML
2 - Sprachen Des Semantic Web - XML2 - Sprachen Des Semantic Web - XML
2 - Sprachen Des Semantic Web - XML
 
Top 10 Internet Trends 2000
Top 10 Internet Trends 2000Top 10 Internet Trends 2000
Top 10 Internet Trends 2000
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Wicket Kurzübersicht
 
Data element constraints for DDB (DDB 2021)
Data element constraints for DDB (DDB 2021)Data element constraints for DDB (DDB 2021)
Data element constraints for DDB (DDB 2021)
 
Legacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenLegacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpen
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und Standards
 
Anatomie von AdWords Scripts - Einführung
Anatomie von AdWords Scripts - Einführung Anatomie von AdWords Scripts - Einführung
Anatomie von AdWords Scripts - Einführung
 
Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...
Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...
Open Data Vorlesung Termin 8: Daten einbinden in D3.js und Anpassen von beste...
 
Jpgraph - eine Einführung
Jpgraph - eine EinführungJpgraph - eine Einführung
Jpgraph - eine Einführung
 
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006
 

CSS-Spezifität - Punktgenaue Ansprache

  • 1. München, den 21. Juli 2011 CSS-SPEZIFITÄTPunktgenaue Ansprache Ralf Richtsteiger, ralf.richtsteiger@peppermind.de
  • 2. 2 01Die Kaskade 02Gewichtung und Ursprung 03Spezifität von Selektoren - Einführung in das Punktesystem 04Spezifität erhöhen - Nachfolgeselektoren, Klassen & Ids 05Spezifität erhöhen - Beispiel 06!important 07Künstliche Steigerung der Spezifität 08Tipps Ressourcen INHALT
  • 3. 01 DIE KASKADE Vorgehen der Prüfung und Festlegung von Stylesheets: Browser erstellt anhand des HTML-Quellcodes das DOM Browser durchläuft das DOM und sucht passende CSS-Eigenschaften und deren Wert Prozess der Wertzuweisung berücksichtigt vier verschiedene Stufen Stufe 1 – Gewichtung Stufe 2 – Ursprung Stufe 3 – Spezifität Stufe 4 – Reihenfolge Grundlage zur Vermeidung von Konflikten verschiedener Stylesheets 3
  • 4. 02 GEWICHTUNG & URSPRUNG Ursprung – wo kommt das Stylesheet her Browser-Stylesheet Benutzer-Stylesheet – vom User im Browser getätigte Einstellungen Autoren-Stylesheet Gewichtung – welches Stylesheet hat welche Priorität Browser-Stylesheet – niedrigste Priorität Benutzer-Stylesheet Autoren-Stylesheet Autoren-Stylesheet mit !important Benutzer-Stylesheet mit !important – höchste Priorität Benutzer (z. B. mit körperlichen Beeinträchtigungen) haben das letzte Wort! 4
  • 5. 03 SPEZIFITÄT VON SELEKTORENEinführung in das Punktesystem leicht verständliches Punktesystem mit vier per Komma getrennten Zahlen Gruppe A inline-Styles: <p style=“color:red;“> Spezifität: 1,0,0,0 – Punkte: 1000 Gruppe B ID: #red Spezifität: 0,1,0,0 – Punkte: 100 Gruppe C Klasse, Pseudoklasse oder Attributselektor: .red Spezifität: 0,0,1,0 – Punkte: 10 Gruppe D Typ-Selektor oder Pseudoelement: p Spezifität: 0,0,0,1 – Punkte: 1 5
  • 6.
  • 7. verschiedene Selektoren können beliebig miteinander kombiniert werden
  • 9. Spezifität 1,0,0,0 – vorher ID & style gleichwertig
  • 12. unflexibel, da nur durch !important-Regel überschreibbar
  • 13. Widerspruch zum Prinzip HTML & CSS – Trennung von Inhalt & Gestaltung6
  • 14. 05 SPEZIFITÄT ERHÖHEN Einfaches Beispiel HTML <p id=„check“ class=„error“>Ich bin eine Fehlermeldung</p> Spezifitäten im Überblick 7
  • 15. 05 SPEZIFITÄT ERHÖHENNachfolgeselektoren, Klassen & IDs HTML <link rel=„stylesheet“ type=„text/css“ href=„color.css“ /> <link rel=„stylesheet“ type=„text/css“ href=„font.css“ /> <div class=“error“> <p>Ich bin eine Fehlermeldung</p> <p class=„info“>Ich bin eine Zusatzinformation</p> </div> CSSp.info{ color:green; } /* color.css*/.error p { color:red; } /* font.css */ Problem: Infotexterscheint rot anstatt dem gewünschten Grün Erklärung Spezifität beider Selektoren ist 0,0,1,1 und damit gleichwertig letzte Regel der Kaskade tritt in Kraft (Reihenfolge) – zuletzt definierte Anweisung wird ausgeführt 8
  • 16. SPEZIFITÄT ERHÖHENNachfolgeselektoren, Klassen & IDs 05 HTML <link rel=„stylesheet“ type=„text/css“ href=„color.css“ /> <link rel=„stylesheet“ type=„text/css“ href=„font.css“ /> <div class=“error“> <p>Ich bin eine Fehlermeldung</p> <p class=„info“>Ich bin eine Zusatzinformation</p> </div> CSSp.info{ color:green; } /* color.css */.error p { color:red; } /* font.css */ Lösung: Erhöhung der Spezifität durch Verwendung eines Nachfolgeselektors:div p.info { color:green; } /* color.css */ Erklärung Spezifität erhöht auf 0,0,1,2 und ist daher höherwertig – der Infotext erscheint grün 9
  • 17.
  • 18. höhere Genauigkeit durch komplexe Selektoren, dadurch aber auch höhere Fehleranfälligkeit10
  • 19.
  • 20. könnte als Gruppe 0 betitelt werden
  • 21. Spezifität: (1)0,0,0,0 – Punkte: (1)0000
  • 22. kann nur mit weiteren !important-Anweisungen überschrieben werdenBesonderheit IE6 .error { color:red!important; color:blue; } Ergebnis: Farbe im IE6 = blau Farbe in allen anderen Browsern = rot 11
  • 23. 07 STEIGERUNG DER SPEZIFITÄT Universalselektor HTML <div id=“main“> <p class=“error“>Ich bin eine Fehlermeldung</p> </div> CSS #main { color:black; } p.error { color:red; } Universalselektor *: #main * { color:black; } Erklärung Durch den Universalselektor wird das Element explizit angesprochen und die höhere Spezifität der ID gewinnt. 12
  • 24.
  • 25. Spezifität der Elemente werden addiert – erreichte Spezifität: 0,1,0,1
  • 26. wird vom IE kleiner Version 7 nicht verstanden und somit nicht ausgeführt13
  • 27.
  • 28. Spezifität der Elemente werden addiert – erreichte Spezifität: 0,0,1,2
  • 29. wird vom IE kleiner Version 7 nicht verstanden und somit nicht ausgeführt14
  • 30.
  • 31. einfacher Attributsselektor wird vom IE erst seit Version 7 unterstützt
  • 32. keine Unterstützung im IE der erweiterten Attributsselektoren ab CSS315
  • 33.
  • 34. Unterstützung der Pseudoklassen im IE kleiner Version 7 nur für Links16
  • 35.
  • 36. im IE6 keine Unterstützung der Pseudoelemente :after & :before,
  • 39.
  • 44. besser: zusätzliche Klasse verwenden: span.arrow
  • 45. !important-Regel nur in Ausnahmefällen
  • 46. bevorzugte Tools: Firebug und WebdeveloperTIPPS IM UMGANG MIT SELEKTOREN 18
  • 47. 19 CSS Specificity: Things YouShouldKnowhttp://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know CSS 2.1 selectorshttp://www.456bereastreet.com/archive/200509/css_21_selectors_part_1 CSS 3 selectorsexplainedhttp://www.456bereastreet.com/archive/200601/css_3_selectors_explained RESSOURCEN
  • 48. © 2011 – Alle Rechte vorbehalten. PEPPERMINDDigital Business Design ist eine Unit der Kochan & Partner GmbHHirschgartenallee 2580639 München Telefon +49 (0)89 173 01 30Fax +49 (0)89 178 60 399kontakt@peppermind.de www.peppermind.de VIELEN DANK!