W Magento 2 DevDoc jest napisane
Aby dołączyć plik CSS, dodaj blok <css src = "<ścieżka> / <plik>" media = "print | <option>" /> w sekcji <head> w pliku układu.
Nie mówi jednak, jak możemy wpłynąć na kolejność plików CSS. A jeśli dodamy w ten sposób pliki CSS do motywu niestandardowego z motywem nadrzędnym, pliki zostaną dodane całkiem na górze sekcji <head>, a pod nimi wiele innych plików CSS, co oznacza, że ich priorytet jest dość wysoki niski i nie możemy łatwo zastąpić reguł z nadrzędnego motywu lub rozszerzeń.
Podobne problemy występowały w Magento 1 i były obejścia. Niektóre były bardziej czyste, inne mniej.
Jaki jest najlepszy sposób na zamówienie pliku CSS niestandardowego motywu na dole <head> w Magento 2 - jeśli to możliwe, zgodnie z wytycznymi układu Magento 2 dla niestandardowych motywów?
order="1"
plik jest porządkowany poprawnie. Nie ma znaczenia, jaki jest atrybut, o ile dodasz dodatkowy atrybut. Aby go sprawdzić, możesz go zmienić nadata-order="1"
i nadal będzie działać.Możesz dodać
media
atrybut do elementu css. Spowoduje to dodanie go na końcu wszystkich zawartych CSS w głowie.źródło
I odpowiedział szczegółowo tutaj o tym, jak Magento czyni CSS i jak zamawianie dzieje się za sceną.
Kilka dodatkowych punktów, o których muszę tu wspomnieć, to:
Jeśli chcesz renderować swój niestandardowy plik css po
style-m.css
istlyle-l.css
, musisz zdefiniować plik css, jak poniżej:Jeśli chcesz załadować niestandardowy plik css przed
style-m.css
istlyle-l.css
, musisz dołączyć plik css do pliku xml układudefault_head_blocks.xml
i dodać niestandardowy plik css powyżejstyle-m.css
istlyle-l.css
.Właściwości CSS są skończone i dobrze zdefiniowane w schemacie układu. Zgodnie ze schematem układu w pliku css można użyć następujących właściwości.
Plik:
vendor/magento/framework/View/Layout/etc/head.xsd
Oznacza to po prostu, że nie możesz używać
order
ani żadnych innych właściwości wraz z definicją css w pliku xml układu. W ten sposób otrzymasz wyjątek wskazujący na niepowodzenie sprawdzania poprawności schematu.źródło
Możesz uczynić swoje reguły CSS mniej lub bardziej ważnymi niż podstawowe reguły CSS, dodając lub usuwając dodatkowe selektory nadrzędne.
Na przykład zobaczmy przykładową regułę CSS w rdzeniu:
Możesz zwiększyć ważność niestandardowej reguły, dodając selektor nadrzędny, na przykład:
lub
Możesz sprawić, że Twoja reguła niestandardowa będzie mniej ważna, usuwając selektor nadrzędny, na przykład:
źródło
!important
(ale oczywiście twoje podejście jest jeszcze lepsze) lub zaimplementować klasę prefiksu dostawcy za pomocą LESS. Nadal powoduje to niepotrzebne koszty ogólne i złożoność. Po co prefiksować setki lub więcej reguł, skoro wystarczy prosta zmiana CSS? Więc wciąż szukam dobrego sposobu na rozwiązanie tego po stronie Magento ...