Ich bin mir sicher, dass dies schon einmal erwähnt / gefragt wurde, aber ich habe nach einem Alter ohne Glück gesucht, meine Terminologie muss falsch sein!
Ich erinnere mich vage an einen Tweet, den ich vor einiger Zeit gesehen habe und der darauf hinwies, dass eine CSS-Regel verfügbar war, mit der alle zuvor im Stylesheet für ein bestimmtes Element festgelegten Stile entfernt wurden.
Ein gutes Anwendungsbeispiel könnte eine Mobile-First-RWD-Site sein, bei der ein Großteil des für ein bestimmtes Element in den Kleinbildschirmansichten verwendeten Stils für dasselbe Element in der Desktopansicht zurückgesetzt oder entfernt werden muss.
Eine CSS-Regel, die etwas erreichen könnte wie:
.element {
all: none;
}
Anwendungsbeispiel:
/* mobile first */
.element {
margin: 0 10;
transform: translate3d(0, 0, 0);
z-index: 50;
display: block;
etc..
etc..
}
@media only screen and (min-width: 980px) {
.element {
all: none;
}
}
So konnten wir das Styling schnell entfernen oder neu einstellen, ohne jede Eigenschaft deklarieren zu müssen.
Macht Sinn?
all
, die vorgeschlagen wird, um alle CSS-Eigenschaften für ein bestimmtes Element auf bestimmte CSS-weite Werte zurückzusetzen. Der Wert, den Sie verwenden möchten, istunset
, der eine Eigenschaft entweder auf ihren geerbten Wert zurücksetzt, wenn sie standardmäßig erbt, oder ansonsten sein Anfangswert. Kein Wort zur Implementierung, aber es ist schön zu wissen, dass jemand daran gedacht hat.all: revert
Wird besorgt. Siehe meine Antwort. @CBroe Ja, so etwas gibt es jetzt.Antworten:
Das Schlüsselwort CSS3
initial
setzt die CSS3-Eigenschaft auf den in der Spezifikation definierten Anfangswert . Dasinitial
Schlüsselwort bietet eine breite Browserunterstützung mit Ausnahme der IE- und Opera Mini-Familien.Da die mangelnde Unterstützung des IE hier zu Problemen führen kann, können Sie einige CSS-Eigenschaften auf ihre ursprünglichen Werte zurücksetzen:
Wie in einem Kommentar von @ user566245 erwähnt:
[POST EDIT FEB 4, '17] Benutzer Joost wurde als moderne Norm eingestuft
BEISPIEL AUS W3
JAVASCRIPT?
Niemand dachte an etwas anderes als CSS, um CSS zurückzusetzen? Ja?
Dieser Snip ist vollständig relevant: https://stackoverflow.com/a/14791113/845310
beantwortet 9. Februar 13 um 20:15 von VisioN
Mit all dem gesagt; Ich denke nicht, dass ein CSS-Reset machbar ist, es sei denn, wir haben nur einen Webbrowser. Wenn der 'Standard' am Ende vom Browser festgelegt wird.
Zum Vergleich finden Sie hier die Firefox 40.0-Werteliste für einen Ort, an
<blockquote style="all: unset;font-style: oblique">
demfont-style: oblique
die DOM-Operation ausgelöst wird.quelle
Für zukünftige Leser. Ich denke, das war gemeint, wird aber derzeit nicht wirklich umfassend unterstützt (siehe unten):
quelle
all
.all
als in Betracht gezogen . Eine zukünftige Version von Edge unterstützt dies möglicherweise.#someselector { ... * { all: unset; } ... }
ist in Sass. Sie haben Sass hier nicht erwähnt - ist das eine neue CSS3-Sache? Wenn ich nach "verschachteltem CSS" suche, bekomme ich nur Einstiegs-Tutorials und Sass-Informationen. Das Hinzufügen des... * { ... } ...
verschachtelten Teils zu meinem CSS (in HTML5) unterbricht mein Dokument (meine untergeordneten Elemente nehmen individuell den Stil an, den ich nur auf das übergeordnete Element anwenden wollte).Es gibt eine brandneue Lösung für dieses Problem.
Verwenden Sie
all: revert
oderall: unset
.Von MDN:
Wenn das Element also einen Klassennamen hat wie
remove-all-styles
:Z.B:
HTML:
Mit CSS:
Werden alle Arten zurückgesetzt aufgebracht durch
other-class
,another-class
und alle anderen geerbt und angewendet Stile , dassdiv
.Oder in Ihrem Fall:
Wird besorgt.
Klicken Sie hier, um den Unterschied zwischen Autoren-, Benutzer- und Benutzeragentenstilen zu ermitteln.
Zum Beispiel: Wenn wir eingebettete Widgets / Komponenten von den Stilen der Seite, die sie enthält , isolieren möchten , könnten wir schreiben:
Dadurch werden alle
author styles
(dh Entwickler-CSS) aufuser styles
(Stile, die ein Benutzer unserer Website festgelegt hat - weniger wahrscheinliches Szenario) oder aufuser-agent
Stile selbst zurückgesetzt, wenn keine Benutzerstile festgelegt sind.Weitere Details hier: https://developer.mozilla.org/en-US/docs/Web/CSS/revert
Das einzige Problem ist die Unterstützung : Nur Safari 9.1 und iOS Safari 9.3 unterstützen
revert
Zeitpunkt des Schreibens den Wert.Also werde ich sagen, benutze diesen Stil und greife auf andere Antworten zurück.
quelle
all: initial
undall: unset
arbeitete für mich auf MS Edge - 16).Lassen Sie mich diese Frage gründlich beantworten, denn sie ist seit mehreren Jahren eine Schmerzquelle für mich und nur sehr wenige Menschen verstehen das Problem wirklich und warum es wichtig ist, dass es gelöst wird. Wenn ich überhaupt für die CSS-Spezifikation verantwortlich wäre, wäre es mir ehrlich gesagt peinlich, dass ich dies im letzten Jahrzehnt nicht angesprochen habe.
Das Problem
Sie müssen Markup in ein HTML-Dokument einfügen und es muss auf eine bestimmte Weise aussehen. Darüber hinaus besitzen Sie dieses Dokument nicht, sodass Sie vorhandene Stilregeln nicht ändern können. Sie haben keine Ahnung, wie die Stylesheets aussehen könnten oder in was sie sich ändern könnten.
Anwendungsfälle hierfür sind, wenn Sie eine anzeigbare Komponente für unbekannte Websites von Drittanbietern bereitstellen. Beispiele hierfür wären:
Einfachste Lösung
Setzen Sie alles in einen Iframe. Dies hat seine eigenen Einschränkungen:
Wenn Ihr Inhalt kann in eine Kiste passen, können Sie Problem # umgehen 1 durch Ihre Inhalte schreiben iframe hat und ausdrücklich den Inhalt gesetzt, so dass die Ausgabe Fußleisten um, da die iframe und Dokument die gleiche Domain freigeben.
CSS-Lösung
Ich habe weit und breit nach der Lösung dafür gesucht, aber es gibt leider keine. Das Beste, was Sie tun können, ist, alle möglichen Eigenschaften, die überschrieben werden können, explizit zu überschreiben und sie auf den Wert zu überschreiben, den Sie für ihren Standardwert halten.
Selbst wenn Sie überschreiben, gibt es keine Möglichkeit sicherzustellen, dass eine gezieltere CSS-Regel Ihre nicht überschreibt . Das Beste, was Sie hier tun können, ist, Ihre Überschreibungsregeln so spezifisch wie möglich anzuvisieren und zu hoffen, dass das übergeordnete Dokument es nicht versehentlich am besten kann: Verwenden Sie eine obskure oder zufällige ID für das übergeordnete Element Ihres Inhalts und verwenden Sie! Important für alle Eigenschaftswertdefinitionen .
quelle
p { color: blue}
Wird nicht zurückgesetzt)andere Möglichkeiten:
1) Fügen Sie den CSS- Code (Datei) des Yahoo CSS-Resets hinzu und fügen Sie dann alles in dieses DIV ein:
2) oder verwenden
quelle
Ich empfehle nicht, die Antwort zu verwenden, die hier als richtig markiert wurde. Es ist ein riesiger CSS-Blob, der versucht, alles abzudecken.
Ich würde vorschlagen, dass Sie bewerten, wie der Stil von Fall zu Fall aus einem Element entfernt wird.
Nehmen wir an, für SEO-Zwecke müssen Sie ein H1 auf einer Seite einfügen, die keine tatsächliche Überschrift im Design hat. Möglicherweise möchten Sie den Navigationslink dieser Seite zu einem H1 machen, aber natürlich möchten Sie nicht, dass dieser Navigationslink als riesiger H1 auf der Seite angezeigt wird.
Sie sollten dieses Element in ein h1-Tag einschließen und es überprüfen. Sehen Sie, welche CSS-Stile speziell auf das h1-Element angewendet werden.
Nehmen wir an, ich sehe die folgenden Stile, die auf das Element angewendet werden.
Jetzt müssen Sie den genauen Stil, der auf das H1 angewendet wird, genau bestimmen und in einer CSS-Klasse deaktivieren. Dies würde ungefähr so aussehen:
Dies ist viel sauberer und speichert nicht nur einen zufälligen Code-Blob in Ihrem CSS, von dem Sie nicht wissen, was er tatsächlich tut.
Jetzt können Sie diese Klasse zu Ihrem h1 hinzufügen
quelle
Wenn Sie sass in einem Build-System verwenden, besteht eine Möglichkeit, die in allen gängigen Browsern funktioniert, darin, alle Ihre Stilimporte mit einem: not () - Selektor wie folgt zu versehen ...
Dann können Sie die Deaktivierungsklasse für einen Container verwenden, und der Unterinhalt enthält keinen Ihrer Stile.
Natürlich werden jetzt alle Ihre Stile mit dem Selektor: not () vorangestellt, daher ist es ein wenig flüchtig, funktioniert aber gut.
quelle
Sie haben Mobile-First-Sites erwähnt ... Für ein ansprechendes Design ist es sicherlich möglich, Stile mit kleinem Bildschirm durch Stile mit großem Bildschirm zu überschreiben. Aber Sie müssen vielleicht nicht.
Versuche dies:
Diese Medienabfragen überschneiden sich nicht, sodass sich ihre Regeln nicht gegenseitig überschreiben. Dies erleichtert die separate Pflege jedes Stilsatzes.
quelle
BESSERE LÖSUNG
Laden Sie das Stylesheet "Kopieren / Einfügen" herunter, um die CSS-Eigenschaften auf die Standardeinstellungen (UA-Stil) zurückzusetzen:
https://github.com/monmomo04/resetCss.git
Danke @ Milche Patern!
Nützlicher Link:Ich habe wirklich nach dem Wert für Reset- / Standardstileigenschaften gesucht. Mein erster Versuch war, den berechneten Wert aus dem Browser-Dev-Tool des Root-Elements (HTML) zu kopieren. Aber wie es berechnet wurde, hätte es auf jedem System anders ausgesehen / funktioniert.
Für diejenigen, die beim Versuch, den Stil der untergeordneten Elemente mit dem Sternchen * zurückzusetzen, auf einen Browserabsturz stoßen. Da ich wusste, dass dies bei Ihnen nicht funktioniert hat, habe ich stattdessen das Sternchen "*" durch den Namen aller HTML-Tags ersetzt . Der Browser stürzte nicht ab. Ich bin auf Chrome Version 46.0.2490.71 m.
Zuletzt ist zu erwähnen, dass diese Eigenschaften den Stil auf den Standardstil des obersten Stammelements zurücksetzen, jedoch nicht auf den Anfangswert für jedes HTML-Element. Um dies zu korrigieren, habe ich die "User-Agent" -Stile eines Webkit-basierten Browsers unter der Klasse "reset-this" implementiert.
Laden Sie das Stylesheet "Kopieren / Einfügen" herunter, um die CSS-Eigenschaften auf den Standardwert (UA-Stil) zurückzusetzen:
https://github.com/monmomo04/resetCss.git
User-Agent-Stil:
Standard-CSS des Browsers für HTML-Elemente
http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css
CSS-Spezifität (achten Sie auf die Spezifität):
https://css-tricks.com/specifics-on-css-specificity/
https://github.com/monmomo04/resetCss.git
quelle
In meinem speziellen Szenario wollte ich das Anwenden allgemeiner Stile auf einen bestimmten Teil der Seite überspringen, besser dargestellt wie folgt:
Nach dem Durcheinander mit dem Zurücksetzen von CSS, das nicht viel Erfolg brachte (hauptsächlich aufgrund der Vorrangstellung von Regeln und der komplexen Stylesheet-Hierarchie), wurde allgegenwärtige jQuery zur Rettung gebracht, die die Arbeit sehr schnell und ziemlich schmutzig erledigte:
(Sagen Sie jetzt, wie böse es ist, JS zu verwenden, um mit CSS umzugehen :-))
quelle
Für diejenigen unter Ihnen, die herausfinden möchten, wie das Styling tatsächlich nur aus dem Element entfernt werden kann, ohne das CSS aus den Dateien zu entfernen, funktioniert diese Lösung mit jquery:
quelle
Wenn Sie Ihr CSS innerhalb von Klassen festlegen, können Sie diese mithilfe der jQuery removeClass () -Methode einfach entfernen. Der folgende Code entfernt die Elementklasse:
Wenn kein Parameter angegeben wird, entfernt diese Methode ALLE Klassennamen aus den ausgewählten Elementen.
quelle
Nein, dies ist nur eine Frage der besseren Verwaltung Ihrer CSS-Struktur.
In deinem Fall würde ich meine CSS ungefähr so bestellen:
Experimentieren Sie einfach.
quelle
Gibt es eine Chance, dass Sie nach der! Wichtigen Regel suchen? Es macht nicht alle Deklarationen rückgängig, bietet jedoch eine Möglichkeit, sie zu überschreiben.
"Wenn eine! Wichtige Regel für eine Stildeklaration verwendet wird, überschreibt diese Deklaration jede andere im CSS abgegebene Deklaration, wo immer sie sich in der Deklarationsliste befindet. Obwohl! Wichtig nichts mit Spezifität zu tun hat."
https://developer.mozilla.org/en-US/docs/CSS/Specificity#The_!important_exception
quelle