Moduluję swoje arkusze stylów za pomocą częściowych części SASS, takich jak:
@import partials/header
@import partials/viewport
@import partials/footer
@import partials/forms
@import partials/list_container
@import partials/info_container
@import partials/notifications
@import partials/queues
czy istnieje sposób na włączenie całego katalogu częściowego (jest to katalog pełen częściowych SASS), takich jak kompas @import czy coś takiego?
@import 'partials/header', 'partials/viewport', 'partials/footer';
.Odpowiedzi:
Jeśli używasz Sass w projekcie Rails, klejnot sass-rails, https://github.com/rails/sass-rails , oferuje globalne importowanie.
Aby odpowiedzieć na problem w innej odpowiedzi „Jeśli importujesz katalog, jak możesz ustalić kolejność importu? Nie ma mowy, aby nie wprowadził on nowego poziomu złożoności”.
Niektórzy twierdzą, że uporządkowanie plików w katalogach może ZMNIEJSZYĆ złożoność.
Projekt mojej organizacji to dość złożona aplikacja. W 119 katalogach znajduje się 119 plików Sass. Odpowiadają one w przybliżeniu naszym widokom i służą głównie do regulacji, a ciężkie podnoszenie jest obsługiwane przez naszą niestandardową ramę. Dla mnie kilka linii importowanych katalogów jest odrobinę mniej skomplikowanych niż 119 linii importowanych nazw plików.
Aby uwzględnić kolejność ładowania, umieszczamy pliki, które muszą zostać załadowane jako pierwsze - miksy, zmienne itp. - w katalogu wczesnego ładowania. W przeciwnym razie kolejność ładowania jest i powinna być nieistotna ... jeśli postępujemy właściwie.
źródło
@import "*"
(w application.css.scss), jeśli pliki css / scss kontrolera znajdują się w folderze „app / asset / stylesheets” razem z application.css.scss.@import "*"
w application.scss obejmuje wszystkie inne pliki znajdujące się w tym samym katalogu, ale nie dołącza ponownie application.scss ... Spodziewałem się, że dostanę nieskończonego błędu zapętlenia.Ta funkcja nigdy nie będzie częścią Sassa. Jednym z głównych powodów jest zamówienie importowe. W CSS pliki zaimportowane jako ostatnie mogą zastąpić podane wcześniej style. Jeśli importujesz katalog, jak możesz ustalić kolejność importu? Nie ma mowy, żeby nie wprowadzono nowego poziomu złożoności. Trzymając listę importów (tak jak w przykładzie), wyrażasz się wyraźnie w kolejności importu. Jest to niezbędne, jeśli chcesz mieć pewność, że możesz nadpisywać style zdefiniowane w innym pliku lub zapisywać miksy w jednym pliku i używać ich w innym.
Aby uzyskać bardziej szczegółową dyskusję, zobacz to zamknięte żądanie funkcji tutaj:
źródło
@import "/functions"
lub@import "partials/"
.Sprawdź projekt sass-globbing .
źródło
Tworzę plik o nazwie
__partials__.scss
w tym samym katalogupartials
W
__partials__.scss
napisałem te:Więc kiedy chcę zaimportować całość
partials
, po prostu napisz@import "partials"
. Jeśli chcę zaimportować któryś z nich, mogę również napisać@import "partials/header"
.źródło
@import 'partials/xyz'
instrukcji za każdym razem, gdy tworzona jest nowa część.forms
iwidgets
katalogi, mogę@import "forms"; @import "widgets"
w głównym pliku CSS strony, i martwię się tylko o wszystkie poszczególne części (@import forms/text; @import forms/button
...) wewnątrzforms.scss
iwidgets.scss
.Możesz użyć trochę obejścia, umieszczając plik sass w folderze, co chcesz zaimportować i zaimportować wszystkie pliki w tym pliku w następujący sposób:
ścieżka pliku: main / current / _current.scss
@import "placeholders"; @import "colors";
a w następnym pliku na poziomie katalogu wystarczy użyć importu do pliku, co zaimportowało wszystkie pliki z tego katalogu:
ścieżka pliku: main / main.scss
@import "EricMeyerResetCSSv20"; @import "clearfix"; @import "current";
W ten sposób masz taką samą liczbę plików, jak podczas importowania całego katalogu. Uważaj na porządek, ostatni plik zastąpi pasujące słupki.
źródło
Możesz zachować kolejność źródeł, a następnie możesz po prostu z tego skorzystać.
Wolę to.
źródło
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
nie wygląda na to.
Jeśli któryś z tych plików zawsze wymaga innych, to niech zaimportują inne pliki i zaimportują tylko pliki najwyższego poziomu. Jeśli wszystkie są samodzielne, myślę, że będziesz musiał robić to tak, jak teraz.
źródło
Przyjęta odpowiedź Dennis Best stwierdza, że „W przeciwnym razie kolejność ładowania jest i powinna być nieistotna ... jeśli postępujemy właściwie”. To jest po prostu nieprawidłowe. Jeśli robisz wszystko poprawnie, korzystasz z kolejności css, aby pomóc Ci zmniejszyć specyficzność i zachować prostotę i czystość css.
Aby zorganizować importowanie, dodaję
_all.scss
plik do katalogu, w którym importuję wszystkie odpowiednie pliki, w odpowiedniej kolejności. W ten sposób mój główny plik importu będzie prosty i czysty, jak poniżej:Możesz to zrobić również dla podkatalogów, jeśli potrzebujesz, ale nie sądzę, aby struktura plików css była zbyt głęboka.
Chociaż używam tego podejścia, nadal uważam, że globalny import powinien istnieć w sass, w sytuacjach, w których porządek nie ma znaczenia, na przykład katalog miksów, a nawet animacji.
źródło
Poszukuję również odpowiedzi na twoje pytanie. Odpowiednio do odpowiedzi poprawny import wszystkich funkcji nie istnieje.
Właśnie dlatego napisałem skrypt Pythona, który musisz umieścić w katalogu głównym folderu scss w następujący sposób:
Następnie przejdzie przez drzewo i znajdzie wszystkie pliki scss. Po uruchomieniu utworzy plik scss o nazwie main.scss
przykład pliku wyjściowego:
źródło
to działało dobrze dla mnie
źródło
Możesz wygenerować plik SASS, który importuje wszystko automatycznie, używam tego zadania Gulp:
Możesz także kontrolować kolejność importowania, zamawiając takie foldery:
źródło
To może być stare pytanie, ale wciąż aktualne w 2020 roku, więc mogę opublikować aktualizację. Od czasu aktualizacji Octobers'19 powinniśmy używać @use zamiast @import , ale to tylko uwaga. Rozwiązaniem tego pytania jest użycie plików indeksu w celu uproszczenia, w tym całych folderów. Przykład poniżej.
https://sass-lang.com/documentation/at-rules/use#index-files
źródło
@forward
w swoim _index.scss zamiast@use
Po zdefiniowaniu pliku do zaimportowania można używać wszystkich wspólnych definicji wszystkich folderów.
Więc,
@import "style/*"
skompiluje wszystkie pliki w folderze stylu.Więcej informacji o funkcji importowania w Sass można znaleźć tutaj .
źródło