Przechowuję arkusze stylów w {root} / styles, a obrazy w {root} / images na stronie internetowej. Jak podać ścieżkę w arkuszach stylów, aby przejść do katalogu obrazów dla określonych obrazów?
np. w background-image: url('/images/bg.png');
Odpowiedzi:
Służy ..
do wskazania katalogu nadrzędnego:
background-image: url('../images/bg.png');
Oto wszystko, co musisz wiedzieć o względnych ścieżkach plików:
Zaczynając od /
powrotu do katalogu głównego i tam zaczyna
Rozpoczynanie od ../
powoduje przejście o jeden katalog wstecz i rozpoczęcie w tym miejscu
Rozpoczynając od ../../
przenosi dwa katalogi wstecz i zaczyna tam (i tak dalej ...)
Aby przejść dalej , po prostu zacznij od pierwszego podkatalogu i idź dalej.
Kliknij tutaj, aby uzyskać więcej informacji!
Zastosowanie ../
:
background-image: url('../images/bg.png');
Możesz tego używać tak często, jak chcesz, np. ../../images/
Lub nawet na różnych pozycjach, np. ../images/../images/../images/
(Tak samo jak ../images/
oczywiście)
W przeglądarce Chrome, gdy ładujesz witrynę z jakiegoś serwera HTTP, działają zarówno ścieżki bezwzględne (np. /images/sth.png
), Jak i ścieżki względne do jakiegoś katalogu wyższego poziomu (np. ../images/sth.png
).
Ale!
Kiedy ładujesz (w Chrome!) Dokument HTML z lokalnego systemu plików, nie możesz uzyskać dostępu do katalogów powyżej bieżącego katalogu. Oznacza to, że nie możesz uzyskać dostępu ../something/something.sth
i zmiana ścieżki względnej na bezwzględną lub nic innego nie pomoże.
../
działają dobrze - lub przynajmniej działają dobrze w tym konkretnym przypadku!
Przypuśćmy, że masz następującą strukturę plików:
-css
--index.css
-images
--image1.png
--image2.png
--image3.png
W CSS możesz uzyskać dostęp image1
, na przykład, używając linii ../images/image1.png
.
UWAGA : Jeśli używasz przeglądarki Chrome, może ona nie działać i pojawi się komunikat o błędzie informujący, że nie można znaleźć pliku. Miałem ten sam problem, więc właśnie usunąłem całą historię pamięci podręcznej z chrome i zadziałało.
Jeśli przechowujesz arkusze stylów / obrazy w folderze, aby wiele witryn mogło ich używać, lub chcesz ponownie użyć tych samych plików w innej witrynie na tym samym serwerze, stwierdziłem, że moja przeglądarka / Apache nie pozwala mi przejść do dowolny folder nadrzędny powyżej głównego adresu URL witryny. Wydaje się to oczywiste ze względów bezpieczeństwa - nie powinno być możliwości przeglądania serwera w żadnym innym miejscu niż określone foldery internetowe.
Na przykład. nie działa: www.mywebsite.com/../images
Aby obejść ten problem, używam linków symbolicznych:
Przejdź do katalogu www.mywebsite.com Uruchom polecenie ln -s ../images images
Teraz www.mywebsite.com/images będzie wskazywać www.mywebsite.com/../images