2011-06-09 76 views
59

我正在使用LESS樣式語言。現在有沒有辦法爲LESS文件設置通用圖像路徑?

.side-bg 
{ 
    background:url(../img/layout/side-bg.jpg) top no-repeat;  
} 

右鍵我的所有圖片都是文件夾../img/中我希望能夠設置一個變量作爲圖像路徑並使用它像這樣:

考慮以下CSS

@image-path: ../img; 

.side-bg 
{ 
    background:url(@image-path/layout/side-bg.jpg) top no-repeat; 
} 

但這不起作用。它不是一個很大的交易,我總是可以使用找到並替換如果圖像文件夾曾經改變。我剛開始學習LESS,並想知道這樣的事情是否可能。

回答

88

嘗試使用字符串插值這樣的事情。在docs中查找「可變插值」。

@base-url: "http://assets.fnord.com"; 
background-image: url("@{base-url}/images/bg.png"); 
+7

不要介意'url()'的引號很重要。我忘記了這些,並沒有奏效。希望這可以幫助某人。 – Voles 2012-08-24 14:09:33

+2

簡單的報價也可以工作,或者需要雙倍報價? – Vadorequest 2014-04-06 10:26:50

+3

它適用於簡單/雙重。 – Vadorequest 2014-04-06 10:33:30

7

安東Strogonoff的answer是好的,但要注意的Issue @294的:

使用從文檔來直上,我得到url://pathtolessfile/variable我設置。儘管我試圖設置絕對URL而不是相對的URL。例如這個工程

@base-url: "../../images/"; 
@background-image : url ("@{base-url}/bg.png"); 

但這不起作用

$base-url: "http://localhost/ns/assets/images/"; 
@background-image : url ("@{base-url}/bg.png"; 

在後一個例子,我的最終的源路徑變得

http://localhost/ns/assets/css/libs/http://localhost/ns/assets/images/bg.png 
+0

我不知道它是否會工作,但你可以嘗試「/ ns/assets/images /」作爲基礎URL。此外,我使用絕對URls沒有問題,但我使用lessc編譯器,而不是客戶端JavaScript。 – 2011-10-27 12:36:00

+0

@JohnIsaacks我可以得到相對URL的工作,但我的主要問題是,我將assets/css/lib中的開發少的文件和assets/css /中的生成樣式表保留下來,所以如果在開發中我需要去。 ./../,但是當我編譯它用於生產時,我需要用../替換它,親自使用LESS.APP for Mac進行編譯,當我完成網站構建時。但是我注意到有至少3個新的編譯器最終出現在Multi-Platform Support中,所以如果我有機會安裝它們,我可能會使用SimpLess for Linux。 – 2011-10-27 21:13:18

+0

如果您沒有解決方案,它似乎不屬於答案。 – trysis 2015-03-17 17:17:11

12

解決辦法:

.side-bg 
{ 
    background : ~"url('@{image-path}/layout/side-bg.jpg')" top no-repeat; 
} 
5

這裏是更新和乾淨的方式來處理圖像路徑s的LESS:

開始與你的變量:

@imagePath: ~"../images/bg/"; 

然後使用它是這樣的:

.main-bg { 
    background: url('@{imagePath}my-background-image.png') repeat scroll left top; 
} 

確保@imagePath變量指向圖像文件夾在任何地方,你有你的編譯CSS,而不是從哪裏你有你的LESS文件。另外,你必須像上面的例子那樣在變量中隱藏地址,以確保它不會被less.js重寫。

8

我正在尋找相同的問題,發現此頁面。我以爲我會後我的解決方案,別人可能會發現它很有用...

@iconpath: '/myicons/'; 

.icon (@icon) { 
    background: no-repeat url('@{iconpath}@{icon}'); 
} 

.icon-foo { .icon('foo.png'); } 
.icon-bar { .icon('bar.png'); } 
.icon-spuds { .icon('spuds.png'); } 

其編譯成(使用http://winless.org/online-less-compiler

.icon-foo { 
    background: no-repeat url('/myicons/foo.png'); 
} 
.icon-bar { 
    background: no-repeat url('/myicons/bar.png'); 
} 
.icon-spuds { 
    background: no-repeat url('/myicons/spuds.png'); 
} 
相關問題