2014-06-09 11 views
7

Ich habe in Auftrag gegeben, um Zielseiten für eine Website zu schreiben.Bypass CSS "Universal Selector * Reset"

Hier ist das Problem:

* { //Universal Selector '*' Reset 
    margin: 0; 
    padding: 0; 
} 

und dann gebaut, um die Website Stile drum herum: der ursprüngliche Entwickler (n) ein "Universal-Selector * Reset" in der Haupt-CSS-Datei hinzugefügt.

Leider ist dies erfordert eine Menge Code in Tabellen zu arbeiten um, Listen, Überschriften, etc ..

Die Frage ist: Gibt es eine Möglichkeit, die Wähler für ein einzelnes Objekt (Tabelle zu umgehen, Liste, etc) oder sogar für die Seite im Allgemeinen (abgesehen von der CSS-Datei nicht enthalten)?

Bearbeiten: Einige Leute waren durch meine Frage verwirrt. Mit Umgehung möchte ich den Stern-Selektor ignorieren, anstatt ihn zu überschreiben ... Beachten Sie auch, dass ich versuche, zusätzlichen Code zu minimieren.

Bearbeiten 2: hier ist eine jsFiddle, die mein Problem veranschaulicht.
Hinweis: "Padding: initial;" scheint nicht zu funktionieren.

+2

Warum sollten Sie nicht einfach 'table, list {margin: 1em; Auffüllen 1em;} '? – agconti

+3

Haben Sie versucht, es mit etwas wie '* {margin: initial; padding: initial; } '? –

+1

Würde nicht nur ein spezifischerer Selektor genau das liefern? 'Tabelle {Rand: 10px; } '. Der Punkt ist sicherlich, Unterschiede im Standard-Styling zwischen Browsern zu beseitigen; Warum würdest du zu diesem inkonsistenten Styling zurückkehren wollen? Ich habe keine Ahnung. – IMSoP

Antwort

12

Beliebige andere Selektor ist spezifischer als die * Selektor und wird somit ihre Auswirkungen überschreiben.
Siehe die folgenden sample Jsfiddle.

So also, wenn Sie zum Beispiel > die Polsterungen auf einem < Tabelle wiederherstellen möchten Sie einfach

tun können
table { 
    padding: initial; 
} 

Wenn dies nicht ganz Ihrer Phantasie kitzeln Sie Ihre Sternchen anstelle Feinabstimmung kann Selektorelemente Ihrer Wahl zu ignorieren:

*:not(table) { 
    [...] 
} 

Anhang:
Wie für viele unerwartet kommen, eine pr Einstellung Opery und dann mit initial darauf mit einem spezifischeren Selektor nicht unbedingt die Einstellung umkehren.
Vergleich a reset to initial value (second image below) zu an unstyled example (first image below) (je nach verwendetem Browser kann das Ergebnis abweichen):

Unstyled:
Unstyled sample

Reset:
Reset sample

Dies liegt daran, the initial value (in der CSS-Spezifikation definiert) der Eigenschaft kann sich vom Standardwert Ihres Browsers für das Element unterscheiden.

+1

Ich werde den Website-Betreuer bitten, einige "NOTs" auf dem Sternchen zu platzieren. Thx –

0

Sie können Werte, die sich bereits in der Kaskade befinden, nicht annullieren (ignorieren). Sie müssen entweder die Regel ändern, die den Wert eingeführt hat, oder sie mit einem anderen Wert überschreiben.

* { 
    margin: initial; 
    padding: initial; 
} 

(Kudos König König) kehrt diese Eigenschaften auf ihre ursprünglichen Werte, aber erneut nicht die Standard-Stile des Browsers für diese Elemente. (Diese Stile wurden früher außer Kraft gesetzt und sind "verloren".) Aber das ist zu erwarten. :)

initial ist der "erste" Wert für eine Eigenschaft, bevor Regeln angewendet werden. Jede Eigenschaft hat einen Anfangswert, der in den CSS-Spezifikationen definiert ist.

Die "Standard" -Stile des Browsers sind sehr unterschiedlich - sie sind tatsächliche Stilregeln, die vor den Stylesheets des Autors angewendet werden. Sie werden geschrieben, um nachzuahmen, wie Browser vor dem CSS bestimmte Elemente angezeigt haben.

Diese sind willkürlich - es gibt keine CSS "defaults" für wie eine Liste aussehen sollte. Also, wenn Sie pro-Element-Standardeinstellungen möchten, ist es wahrscheinlich am besten zu write your own.

+0

Danke für den Gedanken, aber das hat nicht funktioniert (zumindest in Chrom). Siehe Nits Antwort für eine Erklärung warum. –

+0

Ah, ich wusste nicht, dass du Browser-Standardeinstellungen "behalten" willst.Denken Sie daran, dass die Standardstile des Browsers willkürlich und unbekannt sind. Sie sollten also am Anfang einfach Ihre eigenen elementspezifischen Stile schreiben. – sam