Dans le DevDoc Magento 2, il est dit
Pour inclure un fichier CSS, ajoutez le bloc <css src = "<path> / <file>" media = "print | <option>" /> dans la section <head> d'un fichier de mise en page.
Cependant, cela ne dit pas comment nous pouvons influencer l'ordre de nos fichiers CSS. Et si nous ajoutons des fichiers CSS de cette façon dans un thème personnalisé qui a un thème parent, le résultat est que les fichiers sont ajoutés tout en haut de la section <head> avec beaucoup d'autres fichiers CSS en dessous d'eux, ce qui signifie que leur priorité est assez faible et nous ne pouvons pas facilement remplacer les règles du thème parent ou des extensions.
Il y avait des problèmes similaires dans Magento 1 et il y avait des solutions de contournement. Certains étaient plus propres, d'autres moins.
Quelle est la meilleure façon de commander un fichier CSS d'un thème personnalisé au bas de <head> dans Magento 2 - si possible en respectant les directives de mise en page de Magento 2 pour les thèmes personnalisés?
order="1"
le fichier est correctement commandé. Peu importe quel est l'attribut tant que vous ajoutez un attribut supplémentaire. Pour le faire valider, vous pouvez le changer endata-order="1"
et cela fonctionnerait toujours.Vous pouvez ajouter l'
media
attribut à l'élément css. Cela l'ajoutera à la fin de tous les CSS inclus dans la tête.la source
J'ai répondu en détail ici sur la façon dont magento rend les css et comment l'ordre se passe derrière la scène.
Quelques points supplémentaires que je dois mentionner ici sont:
Si vous souhaitez rendre votre fichier css personnalisé après
style-m.css
etstlyle-l.css
, vous devez définir votre fichier css comme ci-dessous:Si vous souhaitez charger votre fichier css personnalisé avant
style-m.css
etstlyle-l.css
, vous devez inclure votre fichier css via le fichier xml de mise en pagedefault_head_blocks.xml
et ajouter votre fichier css personnalisé cistyle-m.css
- dessus etstlyle-l.css
.Les propriétés CSS sont finies et bien définies dans le schéma de disposition. Selon le schéma de disposition, vous pouvez utiliser les propriétés suivantes dans votre fichier css.
Fichier:
vendor/magento/framework/View/Layout/etc/head.xsd
Cela signifie simplement que vous ne pouvez pas utiliser
order
ou toute autre propriété avec la définition CSS dans votre fichier XML de mise en page. Ce faisant, vous obtiendrez une exception qui indique que la validation du schéma échoue.la source
Vous pouvez rendre vos règles CSS plus ou moins importantes que les règles CSS de base en ajoutant ou en supprimant des sélecteurs parents supplémentaires.
Par exemple, voyons un exemple de règle CSS dans le noyau:
Vous pouvez rendre votre règle personnalisée plus importante en ajoutant un sélecteur parent, par exemple:
ou
Vous pouvez rendre votre règle personnalisée moins importante en supprimant un sélecteur parent, par exemple:
la source
!important
(mais bien sûr, votre approche est toujours meilleure que cela) ou implémenter une classe de préfixe de fournisseur avec MOINS. Cela ajoute encore des frais généraux et une complexité inutiles. Pourquoi préfixer des centaines ou plus de règles alors qu'un simple changement d'ordre du CSS le ferait? Je suis donc toujours à la recherche d'un bon moyen de résoudre ce problème du côté de Magento ...