En el Magento 2 DevDoc dice
Para incluir un archivo CSS, agregue el bloque <css src = "<path> / <file>" media = "print | <option>" /> en la sección <head> en un archivo de diseño.
Sin embargo, no dice cómo podemos influir en el orden de nuestros archivos CSS. Y si agregamos archivos CSS de esta manera en un tema personalizado que tiene un tema principal, el resultado es que los archivos se agregan bastante en la parte superior de la sección <head> con muchos otros archivos CSS debajo de ellos, lo que significa que su prioridad es bastante bajo y no podemos anular fácilmente las reglas del tema principal o las extensiones.
Hubo problemas similares en Magento 1 y hubo soluciones. Algunos estaban más limpios, otros menos.
¿Cuál es la mejor manera de ordenar un archivo CSS de un tema personalizado en la parte inferior de <head> en Magento 2, si es posible cumpliendo con las pautas de diseño de Magento 2 para temas personalizados?
order="1"
el archivo se ordena correctamente. No importa cuál sea el atributo siempre que agregue un atributo adicional. Para validarlo, puede cambiarlodata-order="1"
y aún funcionaría.Puede agregar el
media
atributo al elemento css. Esto lo agregará al final de todo el CSS incluido en la cabeza.fuente
Yo respondí en detalle acerca de cómo Magento hace css y cómo el ordenamiento está sucediendo detrás de la escena.
Algunos puntos adicionales que debo mencionar aquí son:
Si desea renderizar su archivo css personalizado después
style-m.css
ystlyle-l.css
, entonces necesita definir su archivo css como se muestra a continuación:Si desea cargar su archivo css personalizado antes
style-m.css
ystlyle-l.css
, entonces debe incluir su archivo css a través del archivo xml de diseñodefault_head_blocks.xml
y agregar su archivo css personalizado arribastyle-m.css
ystlyle-l.css
.Las propiedades CSS son finitas y están bien definidas en el esquema de diseño. De acuerdo con el esquema de diseño, puede usar las siguientes propiedades en su archivo css.
Archivo:
vendor/magento/framework/View/Layout/etc/head.xsd
Esto simplemente significa que no puede usar
order
ninguna otra propiedad junto con la definición de CSS en su archivo xml de diseño. Al hacerlo, obtendrá una excepción que indica que la validación del esquema falla.fuente
Puede hacer que sus reglas CSS sean más o menos importantes que las reglas CSS básicas al agregar o eliminar selectores primarios adicionales.
Por ejemplo, veamos una regla CSS de muestra en el núcleo:
Puede hacer que su regla personalizada sea más importante agregando un selector principal, por ejemplo:
o
Puede hacer que su regla personalizada sea menos importante eliminando un selector principal, por ejemplo:
fuente
!important
(pero, por supuesto, su enfoque es aún mejor que eso) o implementar una clase de prefijo de proveedor con MENOS. Aún así, esto agrega gastos innecesarios y complejidad. ¿Por qué prefijar cientos o más reglas cuando un simple cambio de orden del CSS lo haría? Así que todavía estoy buscando una buena manera de resolver esto en el lado de Magento ...