Grundsätzlich frage ich mich, welchen Vorteil / Zweck es hat @import
, Stylesheets in ein vorhandenes Stylesheet zu importieren, anstatt nur ein weiteres hinzuzufügen ...
<link rel="stylesheet" type="text/css" href="" />
an den Kopf des Dokuments?
<link rel="stylesheet" type="text/css" href="theme.css">
.Antworten:
Unter dem Gesichtspunkt der Seitengeschwindigkeit
@import
sollte eine CSS-Datei fast nie verwendet werden, da dies verhindern kann, dass Stylesheets gleichzeitig heruntergeladen werden. Zum Beispiel, wenn Stylesheet A den Text enthält:Dann wird der Download des zweiten Stylesheets möglicherweise erst gestartet, nachdem das erste Stylesheet heruntergeladen wurde. Wenn andererseits beide Stylesheets in
<link>
Elementen auf der Haupt-HTML-Seite referenziert sind , können beide gleichzeitig heruntergeladen werden. Wenn beide Stylesheets immer zusammen geladen werden, kann es auch hilfreich sein, sie einfach in einer einzigen Datei zu kombinieren.Es gibt gelegentlich Situationen, in denen dies
@import
angemessen ist, aber sie sind im Allgemeinen die Ausnahme und nicht die Regel.quelle
There are occasionally situations where @import is appropriate
Wie unter Verwendung von@media
verschiedenen Arten auf verschiedene Geräte anzuwenden.@import
Schriftart für Google@import url(http://fonts.googleapis.com/css?family=Archivo+Narrow);
zumlink
Stylesheet (z. B. ), damit Sie nicht mit diesem Stylesheet eine in jede Seite einfügen müssen .@import
ist, wenn Sie einen Build-Prozess mit so etwas wie eingerichtet habengrunt-concat-css
. Während der Entwicklung@import
funktionieren die Anweisungen und die Geschwindigkeit beim Laden von Seiten ist kein Problem. Wenn Sie dann für die Produktion erstellen, verkettet ein solches Tool alle Ihre CSS-Dateien entsprechend und entfernt die@import
. Ähnliches mache ich mit meinen JavaScript-Dateiengrunt-browserify
.@import
gerätespezifische Stile anwenden möchten, verwenden Sie doch einfach ein<link>
Tag mit einem Medienattribut .@import
schneller sein würde. Sie sehen wahrscheinlich eine Art Messartefakt.Ich werde Devil's Advocate spielen, weil ich es hasse, wenn die Leute zu sehr zustimmen.
1. Wenn Sie ein Stylesheet benötigen, das von einem anderen abhängt, verwenden Sie @import. Führen Sie die Optimierung in einem separaten Schritt durch.
Es gibt zwei Variablen, für die Sie zu einem bestimmten Zeitpunkt optimieren - die Leistung Ihres Codes und die Leistung des Entwicklers . In vielen, wenn nicht in den meisten Fällen ist es wichtiger , den Entwickler effizienter zu machen und erst dann den Code leistungsfähiger zu machen .
Wenn Sie ein Stylesheet haben, das von einem anderen abhängt , ist es am logischsten, es in zwei separate Dateien zu legen und @import zu verwenden. Das ist für die nächste Person, die sich den Code ansieht, am logischsten.
Normalerweise sind Stylesheets unabhängig, daher ist es sinnvoll, sie alle mit einzuschließen
<link href>
. Wenn es sich jedoch um eine abhängige Hierarchie handelt, sollten Sie das tun, was am logischsten ist.Python verwendet den Import. C verwendet include; JavaScript hat erforderlich. CSS hat Import; Wenn Sie es brauchen, verwenden Sie es!
2. Wenn Sie den Punkt erreicht haben, an dem die Site skaliert werden muss, verketten Sie das gesamte CSS.
Mehrere CSS-Anfragen jeglicher Art - ob über Links oder über @imports - sind für Hochleistungswebsites eine schlechte Praxis . Sobald Sie an dem Punkt angelangt sind, an dem die Optimierung wichtig ist, sollte Ihr gesamtes CSS durch einen Minifier fließen. Cssmin kombiniert Importanweisungen. Wie @Brandon hervorhebt, hat grunt auch dafür mehrere Möglichkeiten. ( Siehe auch diese Frage ).
Sobald Sie sich in der minimierten Phase befinden,
<link>
ist es schneller, wie die Leute bereits betont haben. Verknüpfen Sie also höchstens ein paar Stylesheets und importieren Sie keine, wenn überhaupt möglich.Bevor die Site jedoch den Produktionsmaßstab erreicht, ist es wichtiger, dass der Code organisiert und logisch ist, als dass er etwas schneller abläuft.
quelle
Aus
@import
Geschwindigkeitsgründen ist es am besten, CSS NICHT in eine Seite aufzunehmen. In diesem ausgezeichneten Artikel erfahren Sie, warum nicht: http://www.stevesouders.com/blog/2009/04/09/dont-use-import/Außerdem ist es oft schwieriger, CSS-Dateien zu minimieren und zu kombinieren, die über das @ import-Tag bereitgestellt werden, da Minify-Skripte die @ import-Zeilen nicht aus anderen CSS-Dateien "herausschälen" können. Wenn Sie sie als <Link-Tags einfügen, können Sie vorhandene Minify-PHP / Dotnet / Java-Module verwenden, um die Minimierung durchzuführen.
Also: verwenden
<link />
statt@import
.quelle
Mit der Link-Methode werden die Stylesheets parallel geladen (schneller und besser), und fast alle Browser unterstützen Link
Beim Importieren werden alle zusätzlichen CSS-Dateien einzeln (langsamer) geladen, und Sie erhalten möglicherweise Flash Of Unstyled Content
quelle
@Nebo Iznad Mišo Grgur
Im Folgenden finden Sie alle korrekten Möglichkeiten zur Verwendung von @import
Quelle: https://developer.mozilla.org/en-US/docs/Web/CSS/@import
quelle
Es gibt keinen großen Unterschied zwischen dem Hinzufügen eines CSS-Stylesheets im Kopf und der Verwendung der Importfunktion. Die Verwendung
@import
wird im Allgemeinen zum Verketten von Stylesheets verwendet, damit diese leicht erweitert werden können. Es könnte verwendet werden, um verschiedene Farblayouts einfach auszutauschen, beispielsweise in Verbindung mit einigen allgemeinen CSS-Definitionen. Ich würde sagen, der Hauptvorteil / Zweck ist die Erweiterbarkeit.Ich stimme dem Kommentar von xbonez auch darin zu, dass Portabilität und Wartbarkeit zusätzliche Vorteile sind.
quelle
Sie sind sehr ähnlich. Einige mögen argumentieren, dass @import besser zu warten ist. Jeder @ Import kostet Sie jedoch eine neue HTTP-Anfrage auf die gleiche Weise wie die Verwendung der "Link" -Methode. Im Kontext der Geschwindigkeit ist es also nicht schneller. Und wie "duskwuff" sagte, wird es nicht gleichzeitig geladen, was ein Nachteil ist.
quelle
Ein Ort, an dem ich @import verwende, ist, wenn ich zwei Versionen einer Seite mache, Englisch und Französisch. Ich werde meine Seite auf Englisch mit einer main.css erstellen. Wenn ich die französische Version ausbaue, werde ich auf ein französisches Stylesheet (main_fr.css) verlinken. Oben im französischen Stylesheet importiere ich die Datei main.css und definiere dann bestimmte Regeln für nur die Teile neu, die ich in der französischen Version anders benötige.
quelle
Zitiert von http://webdesign.about.com/od/beginningcss/f/css_import_link.htm
quelle
Manchmal muss man @import anstelle von Inline verwenden. Wenn Sie an einer komplexen Anwendung mit 32 oder mehr CSS-Dateien arbeiten und IE9 unterstützen müssen, haben Sie keine andere Wahl. IE9 ignoriert alle CSS-Dateien nach den ersten 31 und dies schließt CSS ein. Jedes Blatt kann jedoch 31 andere importieren.
quelle
Es gibt viele gute Gründe, @import zu verwenden.
Ein wichtiger Grund für die Verwendung von @import ist das browserübergreifende Design. Importierte Blätter sind im Allgemeinen vor vielen älteren Browsern verborgen, sodass Sie bestimmte Formatierungen für sehr alte Browser wie Netscape 4 oder ältere Serien, Internet Explorer 5.2 für Mac, Opera 6 und älter sowie IE 3 und 4 für PC anwenden können.
Zu diesem Zweck können Sie in Ihrer base.css-Datei Folgendes haben:
Wenden Sie in Ihrem importierten benutzerdefinierten Blatt (newerbrowsers.css) einfach den neueren Kaskadenstil an:
Die Verwendung von "em" -Einheiten ist den "px" -Einheiten überlegen, da sich sowohl die Schriftarten als auch das Design basierend auf den Benutzereinstellungen dehnen können, während ältere Browser besser mit pixelbasierten Einheiten umgehen können (die starr sind und in den Benutzereinstellungen des Browsers nicht geändert werden können). . Das importierte Blatt wird von den meisten älteren Browsern nicht gesehen.
Sie können so, wen interessiert das? Wenn Sie versuchen, größere veraltete Regierungs- oder Unternehmenssysteme aufzusuchen, werden diese älteren Browser weiterhin verwendet. Aber es ist wirklich nur gutes Design, denn der Browser, den Sie heute lieben, wird auch eines Tages veraltet und veraltet sein. Wenn Sie CSS nur eingeschränkt verwenden, haben Sie jetzt eine noch größere und wachsende Gruppe von Benutzeragenten, die mit Ihrer Website nicht gut funktionieren.
Wenn Sie @import verwenden, erreicht Ihre browserübergreifende Website-Kompatibilität jetzt eine Sättigung von 99,9%, einfach weil so viele ältere Browser die importierten Blätter nicht lesen. Es garantiert, dass Sie einen einfachen Schriftsatz für das HTML anwenden, aber fortgeschrittenere CSS werden von neueren Agenten verwendet. Auf diese Weise können ältere Agenten auf Inhalte zugreifen, ohne die in neueren Desktop-Browsern erforderlichen visuellen Anzeigen zu beeinträchtigen.
Denken Sie daran, dass moderne Browser HTML-Strukturen und CSS nach dem ersten Aufruf einer Website sehr gut zwischenspeichern. Mehrere Anrufe an den Server sind nicht der Engpass, der es einmal war.
Megabyte und Megabyte an Javascript-APIs und JSON, die auf intelligente Geräte hochgeladen wurden, und schlecht gestaltete HTML-Markups, die zwischen den Seiten nicht konsistent sind, sind heute der Haupttreiber für langsames Rendern. Ihre durchschnittliche Google-Nachrichtenseite enthält mehr als 6 Megabyte ECMAScript, um nur ein kleines Stück Text zu rendern! LOL
Ein paar Kilobyte zwischengespeichertes CSS und konsistentes sauberes HTML mit kleineren Javascript-Footprints werden in einem Benutzeragenten blitzschnell gerendert, einfach weil der Browser sowohl konsistentes DOM-Markup als auch CSS zwischenspeichert, es sei denn, Sie möchten dies über Javascript-Zirkustricks manipulieren und ändern.
quelle
Ich denke, der Schlüssel dazu sind die beiden Gründe, warum Sie tatsächlich mehrere CSS-Stylesheets schreiben.
Aus dem ersten Grund würde das zusätzliche
<link>
Tag gelten, da Sie so verschiedene CSS-Dateien für verschiedene Seiten laden können.Aus dem zweiten Grund
@import
erscheint die Anweisung als die praktischste, da Sie mehrere CSS-Dateien erhalten, die geladenen Dateien jedoch immer gleich sind.Aus Sicht der Ladezeit gibt es keinen Unterschied. Der Browser muss die getrennten CSS-Dateien unabhängig von ihrer Implementierung überprüfen und herunterladen.
quelle
Verwenden Sie @import in Ihrem CSS, wenn Sie ein CSS-RESET wie Eric Meyers Reset CSS v2.0 verwenden. Es erledigt also seine Aufgabe, bevor Sie Ihr CSS anwenden, um Konflikte zu vermeiden.
quelle
Ich denke, @import ist am nützlichsten, wenn Sie Code für mehrere Geräte schreiben. Fügen Sie eine bedingte Anweisung ein, um nur den Stil für das betreffende Gerät einzuschließen. Dann wird nur ein Blatt geladen. Sie können das Link-Tag weiterhin verwenden, um allgemeine Stilelemente hinzuzufügen.
quelle
Ich habe einen "hohen Höhepunkt" verknüpfter Stylesheets erlebt, die Sie hinzufügen können. Während das Hinzufügen einer beliebigen Anzahl von verknüpften Javascript für meinen kostenlosen Host-Anbieter kein Problem war, kam es nach dem Verdoppeln der Anzahl externer Stylesheets zu einem Absturz / einer Verlangsamung. Und das richtige Codebeispiel ist:
Ich finde es also nützlich, eine gute mentale Karte zu haben, wie Nitram erwähnte, während ich das Design noch hart codiere. Gute Fahrt. Und ich entschuldige mich für etwaige englische Grammatikfehler.
quelle
Es gibt fast keinen Grund, @import zu verwenden, da es jede einzelne importierte CSS-Datei separat lädt und Ihre Site erheblich verlangsamen kann. Wenn Sie an der optimalen Art und Weise interessiert sind, mit CSS umzugehen (wenn es um die Seitengeschwindigkeit geht), sollten Sie wie folgt mit Ihrem gesamten CSS-Code umgehen :
Weitere Informationen finden Sie hier: http://www.giftofspeed.com/optimize-css-delivery/
Der Grund, warum das oben Genannte am besten funktioniert, liegt darin, dass der Browser weniger Anfragen bearbeitet und sofort mit dem Rendern des CSS beginnen kann, anstatt separate Dateien herunterzuladen.
quelle
<HEAD>
Dies könnte einem PHP-Entwickler helfen. Mit den folgenden Funktionen werden Leerzeichen entfernt, Kommentare entfernt und alle Ihre CSS-Dateien verkettet. Fügen Sie es dann
<style>
vor dem Laden der Seite in ein Tag im Kopf ein.Die folgende Funktion entfernt Kommentare und minimiert die übergebenen CSS. Es wird in Verbindung mit der nächsten Funktion gepaart.
Sie rufen diese Funktion im Kopf Ihres Dokuments auf.
Fügen Sie die Funktion
concatenateCSS()
in Ihren Dokumentenkopf ein. Übergeben Sie ein Array mit den Namen Ihrer Stylesheets mit dem Pfad IE :css/styles.css
. Sie müssen die Erweiterung nicht hinzufügen,.css
da sie in der obigen Funktion automatisch hinzugefügt wird.quelle
file_get_contents()
Ist auch erheblich langsamer als die Verwendung von cURL.