2011-12-22 12 views
89

Chcę mieć jedną zmienną, która zawiera ścieżkę główną do wszystkich moich obrazów w moim pliku CSS. Nie wiem, czy jest to możliwe w czystym Sassie (rzeczywisty projekt sieciowy nie jest RoR, więc nie może używać asset_pipeline ani żadnego z tego fantazyjnego jazzu).Masz zmienną w ścieżce obrazów w Sassie?

Oto mój przykład, który nie działa. W trakcie kompilacji buforuje pierwszą instancję zmiennej w opisie właściwości adresu URL w tle ("Invalid CSS after "..site/background": expected ")").

Definiowanie funkcji, aby powrócić na ścieżkę:

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

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

Użycie funkcji:

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 widziane.

Odpowiedz

153

Czy wypróbowałeś składnię Interpolation?

background: url(#{$get-path-to-assets}/site/background.jpg) repeat-x fixed 0 0; 
+0

To nie działa dla mnie, ponieważ CssVariablesProcessor nie przetwarza zmiennych, nawet jeśli jest ustawiony jako preprocesor przed CssDataUriPreProcessor – Alexey

+8

To takie piękne, myślę, że " będę płakać –

+0

Działa również w cytowanych ścieżkach np. w kompasie font-face. ''# {$ fontName} .ext', ..' – Fleuv

69

Nie potrzeba funkcji:

$assetPath : "/assets/images"; 

... 

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

Zobacz interpolation docs szczegóły.

+0

Wygląda na to, że @Madmartigan dotarł tam pierwszy, więc zaznaczam jego jako odpowiedź, nawet jeśli twoja jest również poprawna. Dzięki! – program247365

+0

+1 dziękuję za uwagę na dokumentach interpolacji – Shanimal

+5

Zdecydowanie wolę zwięzłość wskazując bezpośrednio na zmienną –

Powiązane problemy