No Magento 2 DevDoc , diz
Para incluir um arquivo CSS, adicione o bloco <css src = "<path> / <file>" media = "print | <option>" /> na seção <head> em um arquivo de layout.
No entanto, não diz como podemos influenciar a ordem dos nossos arquivos CSS. E se adicionarmos arquivos CSS dessa maneira em um tema personalizado com um tema pai, o resultado é que os arquivos são adicionados na parte superior da seção <head> com muitos outros arquivos CSS abaixo deles, o que significa que sua prioridade é bastante baixo e não podemos substituir facilmente as regras do tema ou das extensões pai.
Houve problemas semelhantes no Magento 1 e houve soluções alternativas. Alguns eram mais limpos, outros menos.
Qual é a melhor maneira de solicitar um arquivo CSS de um tema personalizado na parte inferior do <head> no Magento 2 - se possível, cumprindo as diretrizes de layout do Magento 2 para temas personalizados?
order="1"
o arquivo é ordenado corretamente. Não importa qual é o atributo, desde que você adicione um atributo extra. Para validar, você pode alterá-lo paradata-order="1"
e ainda funcionaria.Você pode adicionar o
media
atributo ao elemento css. Isso o adicionará ao final de todo o CSS incluído na cabeça.fonte
Eu respondi em detalhes aqui sobre como o magento renderiza css e como a ordem está acontecendo nos bastidores.
Alguns pontos extras que preciso mencionar aqui são:
Se você quiser renderizar seu arquivo css personalizado depois de
style-m.css
estlyle-l.css
, precisará definir seu arquivo css como abaixo:Se você deseja carregar seu arquivo css personalizado antes
style-m.css
estlyle-l.css
, então, você precisa incluir o arquivo css através do arquivo xml de layoutdefault_head_blocks.xml
e adicionar seu arquivo css personalizado acimastyle-m.css
estlyle-l.css
.As propriedades CSS são finitas e estão bem definidas no esquema de layout. De acordo com o esquema do layout, você pode usar as seguintes propriedades no seu arquivo css.
Arquivo:
vendor/magento/framework/View/Layout/etc/head.xsd
Isso significa simplesmente que você não pode usar
order
ou quaisquer outras propriedades junto com a definição de css no arquivo xml de layout. Ao fazer isso, você receberá uma exceção que indica falha na validação do esquema.fonte
Você pode tornar suas regras CSS mais ou menos importantes que as regras CSS principais, adicionando ou removendo seletores pai adicionais.
Por exemplo, vamos ver uma regra de CSS de amostra no núcleo:
Você pode tornar sua regra personalizada mais importante adicionando um seletor pai, por exemplo:
ou
Você pode tornar sua regra personalizada menos importante removendo um seletor pai, por exemplo:
fonte
!important
(mas é claro que sua abordagem ainda é melhor que isso) ou implementar uma classe de prefixo de fornecedor com LESS. Ainda assim, isso adiciona sobrecarga e complexidade desnecessárias. Por que prefixar centenas ou mais regras quando uma simples alteração de ordem do CSS faria isso? Então, eu ainda estou procurando uma boa maneira de resolver isso no lado do Magento ...