Czy w Sass istnieje zmienna w ścieżce obrazów?

Chcę mieć jedną zmienną, która zawiera ścieżkę główną do wszystkich moich obrazów w moim pliku CSS. Nie mogę do końca dowiedzieć się, czy jest to możliwe w czystym Sass (rzeczywisty projekt internetowy nie jest RoR, więc nie mogę użyć asset_pipeline lub żadnego z tych fantazyjnych jazzów).

Oto mój przykład, który nie działa. Podczas kompilacji jest to pierwsza instancja zmiennej we właściwościach URL tła mówiąc ("Invalid CSS after "..site/background": expected ")").

Definiowanie funkcji zwracającej ścieżkę:

//Vars
$assetPath : "/assets/images";

//Functions
@function get-path-to-assets($assetPath){
  @return $assetPath;
}

Za pomocą Funkcja:

body {
  margin: 0 auto;
  background: url($get-path-to-assets/site/background.jpg) repeat-x fixed 0 0;
  width: 100%; }
Każda pomoc będzie mile widziana.
 99
Author: Volker E., 2011-12-22

4 answers

Próbowałeś składni interpolacji ?

background: url(#{$get-path-to-assets}/site/background.jpg) repeat-x fixed 0 0;
 173
Author: Wesley Murch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-08 02:07:24

No need for a function:

$assetPath : "/assets/images";

...

body {
  margin: 0 auto;
  background: url(#{$assetPath}/site/background.jpg) repeat-x fixed 0 0;
  width: 100%; }

Zobacz dokumenty interpolacyjne Po szczegóły.

 78
Author: steveax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-08 02:06:21

Szukałem odpowiedzi na to samo pytanie, ale chyba znalazłem lepsze rozwiązanie: http://blog.grayghostvisuals.com/compass/image-url/

Zasadniczo możesz ustawić ścieżkę obrazu w config.rb i używasz image-url () helper

 6
Author: NerdCowboy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-22 17:15:24

Dodanie czegoś do powyższych poprawnych odpowiedzi. Używam NetBeans IDE i wyświetla błąd podczas używania url(#{$assetPath}/site/background.jpg) tej metody. To był tylko błąd netbeans i brak błędu w kompilacji sass. Ale ten błąd przerywa formatowanie kodu w netbeans i Kod staje się brzydki. Ale kiedy używam go w cytatach, jak poniżej, pokazuje cud!

url("#{$assetPath}/site/background.jpg")

 0
Author: Pons Purushothaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 06:26:52