Sassの画像パスに変数がありますか?


123

CSSファイル内のすべての画像へのルートパスを含む1つの変数が必要です。純粋なSassでこれが可能かどうかはわかりません(実際のWebプロジェクトはRoRではないため、asset_pipelineやその派手なジャズは使用できません)。

これが機能しない私の例です。コンパイルすると、バックグラウンドのurlプロパティの変数の最初のインスタンスで("Invalid CSS after "..site/background": expected ")")と表示されます。

パスを返す関数を定義する:

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

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

関数の使用:

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

任意の助けいただければ幸いです。

回答:


207

補間構文を試しましたか?

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

1
CssDataUriPreProcessorの前にプリプロセッサとして設定されていても、CssVariablesProcessorは変数を処理しないため、私にとっては機能しません
Alexey

1
引用符で囲まれたパスでも機能します(コンパスのフォントフェースミックスインなど)。'#{$fontName}.ext', ..
Fleuv、2018

はい、引用符で囲まれたパスで使用することをお勧めします。そうでなければ、それはnetbeans IDEでエラーを示します。URL( "#{$ GET-パスツー資産} /site/background.jpg")
ポンスPurushothaman

94

関数は必要ありません:

$assetPath : "/assets/images";

...

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

詳細については、補間のドキュメントを参照してください。


7
変数を直接指定することで簡潔さを間違いなく好む
skia.heliou 2015


1

上記の正解に何かを追加します。私はnetbeans IDEを使用していますが、url(#{$assetPath}/site/background.jpg)この方法を使用するとエラーが表示されます。これは単なるnetbeansエラーであり、sassコンパイルのエラーではありませんでした。しかし、このエラーにより、NetBeansおよびコードでのコードのフォーマットが壊れて醜くなります。しかし、以下のように引用符の中で使用すると、不思議に見えます!

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


0

絶対パスの代わりに相対パスを使用できます。

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

.logo {
    max-width: 65px;
    @include logo;
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.