Wenn Sie mindestens ein paar Jahre CSS schreiben, haben Sie mit Sicherheit einen CSS -Hack verwendet. Wenn Sie jedoch relativ neu in CSS sind, ist es möglich, dass Sie den Begriff gehört haben, aber nicht genau, was er bedeutet.
In diesem Beitrag werde ich erklären, was genau der Begriff CSS -Hack bedeutet und wie ein CSS -Hack verwendet wird. Aber zuerst war ein Hintergrund, um zu erklären, warum ich diesen Beitrag sogar notwendig war.
Wie viele von Ihnen wissen, hat SitePoint kürzlich die Ergebnisse einer großen CSS -Umfrage veröffentlicht, die ich zusammengestellt habe. Eine der Fragen, die die Umfrage stellte, war Folgendes:
Welches der folgenden Microsoft -Browser schreiben Sie derzeit CSS -Hacks für?
Als ich die Ergebnisse zum ersten Mal untersucht habe, schien ich eine Kuriosität in den Ergebnissen für diese Frage übersehen zu haben. Glücklicherweise hat David Storey, ein Ingenieur, der am neuesten Browser von Microsoft arbeitet, darauf hin. Von den 1.418 Personen, die diese Frage beantworteten, gingen die Ergebnisse so:
Es ist schlimm genug, dass mehr als 60% der Entwickler behaupten, CSS -Hacks für IE9 und IE10 zu schreiben - aber 45% für Edge? Obwohl es einige veröffentlichte Hacks für Edge gibt, sind sie noch nicht auf der Browserhacks -Website, so dass es unwahrscheinlich ist, dass so viele Menschen Hacks für diesen Browser verwenden. Aber die wichtigere Frage ist: Welche Probleme treffen die Entwickler mit dem Rendern von CSS in Kante, dass sie Hacks benötigen?
Ich dachte, es könnte sein, dass viele der Teilnehmer Hacks mit der Browser -Erkennung über das Sniff von User Agent verwirrt. Aber auch das würde nicht erklären, warum die Zahl für Edge so hoch ist.
Dann wurde mir klar, dass sie die Frage völlig missverstanden haben mussten; Sie denken, "CSS -Hacks für Browser X" ist das gleiche wie "Unterstützung des Browsers X". Es gibt wirklich keine andere logische Erklärung, insbesondere wenn Sie die hohen Prozentsätze für die anderen Browser berücksichtigen, die ebenfalls keine Hacks benötigen sollten.
definieren wir also genau, was ein Hack ist, für diejenigen, die durch den Begriff verwechselt werden.
Damit etwas in Ihrer CSS -Datei als „Hack“ betrachtet werden kann, muss es seine Stile nur auf die gezielten Browser anwenden, während alle anderen Browser es ignorieren.
Betrachten wir ein Beispiel. Dies ist ein CSS -Hack:
<span>* html <span>.sidebar</span> { </span> <span>margin-left: 5px; </span><span>}</span>
Das CSS im obigen Beispiel (oft als „Stern-HTML-Hack“ bezeichnet) zielt auf nur Internet Explorer-Versionen 6 und unter ab. Die meisten Entwickler, die IE6 unterstützen, kümmert sich vor IE6 nicht wirklich um etwas, daher funktioniert dies normalerweise nur als IE6-Hack.
Der Teil, der der "Hack" ist, ist das Sternchen, gefolgt von "HTML". Dies ist eine Kombination aus dem Universal Selector und dem Elementtyp -Selektor. Irgendwann entdeckte jemand, dass diese beiden Selektoren vor einem anderen Selektor nur in bestimmten Versionen von IE funktionieren, während sie in anderen Browsern keinen Einfluss haben. Dies bedeutet, dass der linke Rand auf dem im obigen Code -Beispiel definierten. SideBar -Element nur für IE6 oder früher gilt. In diesem Fall ist das CSS tatsächlich gültig, sodass Sie keinen Fehler oder keine Warnung darüber erhalten (dazu später mehr).
Hier ist ein weiteres Beispiel auf der Browserhacks -Website, diesmal auf IE11:
<span>_<span>:-ms-fullscreen, :root .selector</span> { </span> <span>margin-left: 5px; </span><span>}</span>
Ich werde nicht in die Einzelheiten eingehen, warum dies ein Hack ist (teilweise, weil ich nicht ganz sicher bin, ob ich es verstehe), aber das obige CSS gilt nur für Internet Explorer Version 11. Technisch gesehen, sagt Browserhacks "IE11 und oben", also gehe ich davon aus, dass dies bedeutet, dass es auch im Edge -Browser von Microsoft funktioniert, aber ich habe das nicht überprüft.
Der wichtige Punkt hier ist nicht, welche Browser gezielt sind, sondern dass wir alle auf derselben Seite sind, um zu verstehen, was ein CSS -Hack ist.Sind CSS -Hacks ungültige CSS?
Es ist möglich, dass Ihr CSS Hacks enthalten und keine Warnungen oder Fehler erzeugen. Wenn beispielsweise die einzigen CSS-Hacks, die Sie verwenden, auf IE6 mit dem Stern-HTML-Hack abzielen, bestätigen Ihre Stylesheets ohne Fehler oder Warnungen, die mit Hacks verbunden sind.
Einige Hacks (wie der oben diskutierte IE11-Hack) verwenden anhand von Lieferanten-spezifischen Code (z. B.: -ms-fullscreen). In einem solchen Fall könnten die Standardeinstellungen im Validator Ihr CSS mit der grünen Bildschirmnachricht „Pass“ anmelden:
Aber wenn Sie auf den Bildschirm Validator nach unten scrollen, sehen Sie Warnungen wie folgt:
In diesem Fall warnt es mich, weil: -ms-full-Screen als „ein unbekannter Anbieter erweiterter Pseudoklasse“ gilt. Wenn Sie sich wohler fühlen, wenn Sie diese Art von CSS als Fehler anstelle einer Warnung betrachten, können Sie die Einstellungen des Validators mit dem Abschnitt „Weitere Optionen“ unter dem Eingabebereich des Validators anpassen:
Ändern der Option „Anbieter Erweiterungen“ in „Fehler“ verhindern, dass ein Stylesheet die Validierung überholt, wenn es Anbieter-Präfixe oder andere Browser-spezifische CS (nicht unbedingt Hacks) enthält.
.Andererseits können Sie so etwas verwenden:
<span>* html <span>.sidebar</span> { </span> <span>margin-left: 5px; </span><span>}</span>
Die obigen CSS -Ziele zielen IE8 und unten. Der „Hack“ ist die Kombination aus dem Backslash und den neun (9). Die meisten Browser ignorieren die gesamte Linie, da der 9 -Teil die Linie ungültig macht. Aus irgendeinem Grund wird es jedoch immer noch als gültig angesehen und die Margeneinstellung angewendet.
In diesem Fall wird jedoch eine Fehlermeldung angezeigt, in welchen Einstellungen Sie für den Validator auswählen, und das Stylesheet überträgt keine Validierung:
Die folgenden Methoden und Techniken sollten nicht unbedingt als CSS -Hacks eingestuft werden:
Bedingte Kommentare, mit denen Sie CSS oder sogar HTML schreiben können, um bestimmte Versionen des Internet -Explorers (oder sogar bestimmte Versionen von Internet Explorer auszuschließen) ein wenig Grauzone auszurichten. Wenn sie auf eine bestimmte Art und Weise geschrieben sind, sind sie gültig HTML, aber sie sind "hacky".
Bereits 2008 hat Paul Irish das populär gemacht, was wir als "bedingte Klassen" bezeichnen, was ich sicher bin, die viele von uns verwendet haben. Diese verwenden bedingte Kommentare, um Klassen zu erstellen, die Sie in Ihrem Stylesheet verwenden können, um spezifische Versionen von IE unter Verwendung gültiger CSS zu zielen.
Ist die Verwendung bedingter Kommentare also ein „CSS -Hack“? Ich würde ja sagen, nur weil sie genau das Gleiche beabsichtigen, wenn sie einen üblicheren CSS -Hack verwenden.
Wie bei vielen Webentwicklungsthemen ist die Antwort hier nicht einfach Ja oder Nein . Die richtige Antwort lautet , es hängt ab. Die meisten Puristen werden sie nicht benutzen. Aber es ist oft nicht so einfach. Wenn es um Hacks geht, lautet mein Rat:
Wenn Sie sich aus diesem Beitrag an nichts anderes erinnern, denken Sie daran:
Ein CSS -Hack wendet CSS in einem oder mehreren spezifischen Browserversionen an, während dieselbe CSS von anderen Browsern ignoriert wird.
Das ist die einfache Definition eines CSS -Hacks. Nur weil Sie Microsoft Edge in Ihrem CSS unterstützen, heißt das nicht, dass Sie Hacks für Edge schreiben. Unterstützung ist ein ganz anderes Thema.
Es könnte ein paar Dinge in diesem Beitrag geben, mit denen nicht alle zustimmen, aber ich denke, die meisten Entwickler, die verstehen, was Hacks sind
Wenn ich etwas ausgelassen oder Fehler gemacht habe, können Sie mich in den Kommentaren informieren und die erforderlichen Korrekturen vornehmen.häufig gestellte Fragen (FAQs) zu CSS -Hacks
Wie kann ich vermeiden, CSS -Hacks zu verwenden? Die Verwendung von CSS -Hacks bedeutet, Ihre Website auf eine Weise zu entwerfen, die mit allen wichtigen Browsern kompatibel ist. Dies kann die Verwendung eines CSS -Resets beinhalten, um sicherzustellen, dass Ihre Stile konsistent auf verschiedene Browser angewendet werden, und die Verwendung von CSS -Funktionen zu vermeiden, die nicht weit verbreitet sind. Darüber hinaus können Sie Tools wie Can ich verwenden, um die Browserkompatibilität verschiedener CSS -Funktionen zu überprüfen.
Wie kann ich mehr über CSS -Hacks erfahren? Online, wo Sie mehr über CSS -Hacks erfahren können. Websites wie CSS-Tricks und Smashing Magazine veröffentlichen häufig Artikel über CSS-Hacks und andere fortschrittliche CSS-Techniken. Darüber hinaus finden Sie viele Tutorials und Beispiele für CSS -Hacks auf Websites wie Codepen und JSFiddle.
Können CSS -Hacks die Leistung meiner Website beeinflussen? Wenn sie übermäßig verwendet werden. Dies liegt daran, dass sie Ihren CSS -Code komplexer und für den Browser analysieren können. Darüber hinaus beinhalten einige CSS -Hacks die Verwendung von CSS -Eigenschaften oder -Sektoren, die nicht für die Leistung optimiert sind.
Das obige ist der detaillierte Inhalt vonWas ist die Definition eines 'CSS -Hacks'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!