¿Tiene una variable en la ruta de imágenes en Sass?


123

Quiero tener una variable que contenga la ruta raíz a todas mis imágenes en mi archivo CSS. No puedo entender si esto es posible en Sass puro (el proyecto web real no es RoR, por lo que no puedo usar asset_pipeline ni nada de ese jazz sofisticado).

Aquí está mi ejemplo que no funciona. Al compilar, se resiste en primera instancia a la variable en la propiedad url de fondo que dice ( "Invalid CSS after "..site/background": expected ")").

Definición de la función para devolver la ruta:

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

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

Usando la función:

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

Cualquier ayuda sería apreciada.

Respuestas:


207

¿Has probado la sintaxis de interpolación ?

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

1
No me funciona porque CssVariablesProcessor no procesa variables incluso si está configurado como preprocesador antes de CssDataUriPreProcessor
Alexey

1
También funciona en rutas citadas, por ejemplo, en la brújula font-face mixin. '#{$fontName}.ext', ..
Fleuv

Sí, es mejor usarlo en la ruta citada. De lo contrario, muestra un error en netbeans IDE. url ("# {$ get-path-to-assets} /site/background.jpg")
Pons Purushothaman el

94

No hay necesidad de una función:

$assetPath : "/assets/images";

...

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

Vea los documentos de interpolación para más detalles.


77
Definitivamente prefiero la brevedad con señalar directamente a la variable
skia.heliou


1

Agregar algo a las respuestas correctas anteriores. Estoy usando netbeans IDE y muestra un error al usar url(#{$assetPath}/site/background.jpg)este método. Fue solo un error de netbeans y ningún error en la compilación sass. Pero este error al formatear el código de ruptura en netbeans y el código se vuelve feo. Pero cuando lo uso entre comillas como a continuación, ¡muestra asombro!

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


0

Podemos usar la ruta relativa en lugar de la ruta absoluta:

$assetPath: '~src/assets/images/';
$logo-img: '#{$assetPath}logo.png';
@mixin logo {
  background-image: url(#{$logo-img});
}

.logo {
    max-width: 65px;
    @include logo;
 }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.