Im Magento 2 DevDoc heißt es
Um eine CSS-Datei einzuschließen, fügen Sie den Block <css src = "<Pfad> / <Datei>" media = "print | <Option>" /> im Abschnitt <head> einer Layoutdatei hinzu.
Es sagt jedoch nicht aus, wie wir die Reihenfolge unserer CSS-Dateien beeinflussen können. Und wenn wir CSS-Dateien auf diese Weise in ein benutzerdefiniertes Thema einfügen, das ein übergeordnetes Thema hat, werden die Dateien ganz oben im Abschnitt <head> mit vielen anderen CSS-Dateien darunter hinzugefügt, was bedeutet, dass ihre Priorität sehr hoch ist niedrig und wir können nicht einfach Regeln aus dem übergeordneten Thema oder Erweiterungen überschreiben.
Es gab ähnliche Probleme in Magento 1 und es gab Workarounds. Einige waren sauberer, andere weniger.
Wie kann in Magento 2 eine CSS-Datei eines benutzerdefinierten Themas am unteren Rand von <head> am besten bestellt werden - wenn möglich, unter Einhaltung der Magento 2-Layoutrichtlinien für benutzerdefinierte Themen?
order="1"
die Datei beim Hinzufügen korrekt sortiert wird. Es spielt keine Rolle, um welches Attribut es sich handelt, solange Sie ein zusätzliches Attribut hinzufügen. Um es zu validieren, können Sie es in änderndata-order="1"
und es würde immer noch funktionieren.Sie können das
media
Attribut dem CSS-Element hinzufügen . Dies fügt es am Ende aller enthaltenen CSS in den Kopf.quelle
Ich habe hier ausführlich geantwortet, wie Magento CSS rendert und wie die Bestellung hinter den Kulissen abläuft.
Einige zusätzliche Punkte, die ich hier erwähnen muss, sind:
Wenn Sie Ihre benutzerdefinierte CSS-Datei nach
style-m.css
und rendern möchten,stlyle-l.css
müssen Sie Ihre CSS-Datei wie folgt definieren:Wenn Sie Ihre benutzerdefinierte CSS-Datei vor
style-m.css
und laden möchten,stlyle-l.css
müssen Sie Ihre CSS-Datei über die XML-Layoutdatei einfügendefault_head_blocks.xml
und Ihre benutzerdefinierte CSS-Datei überstyle-m.css
und hinzufügenstlyle-l.css
.CSS-Eigenschaften sind endlich und im Layoutschema gut definiert. Entsprechend dem Layoutschema können Sie die folgenden Eigenschaften in Ihrer CSS-Datei verwenden.
Datei:
vendor/magento/framework/View/Layout/etc/head.xsd
Dies bedeutet einfach, dass Sie
order
keine anderen Eigenschaften zusammen mit der CSS-Definition in Ihrer Layout-XML-Datei verwenden können. Auf diese Weise erhalten Sie eine Ausnahme, die darauf hinweist, dass die Schemaüberprüfung fehlschlägt.quelle
Sie können Ihre CSS-Regeln wichtiger oder weniger wichtig als die Kern-CSS-Regeln machen, indem Sie zusätzliche übergeordnete Selektoren hinzufügen oder entfernen.
Sehen wir uns zum Beispiel eine Beispiel-CSS-Regel im Kern an:
Sie können Ihre benutzerdefinierte Regel wichtiger machen, indem Sie einen übergeordneten Selektor hinzufügen. Beispiel:
oder
Sie können Ihre benutzerdefinierte Regel weniger wichtig machen, indem Sie einen übergeordneten Selektor entfernen. Beispiel:
quelle
!important
(aber natürlich ist Ihr Ansatz immer noch besser als das) oder eine Herstellerpräfixklasse mit WENIGER implementieren. Dies erhöht jedoch den Aufwand und die Komplexität. Warum Hunderte oder mehr Regeln voranstellen, wenn eine einfache Änderung der CSS-Reihenfolge dies bewirken würde? Ich bin also immer noch auf der Suche nach einem guten Weg, um dieses