2011-05-01 89 views
1

考慮following example使用外部CSS可以做到這一點嗎?

HTML:

<div id="julia" class="photo"></div> 
<div id="rachel" class="photo"></div> 
<div id="martin" class="photo"></div> 

CSS:

.photo { 
    width: 60px; 
    height: 60px; 
    display: inline-block; 
} 
.photo:hover { 
    background-position: -60px 0; 
} 
#julia { 
    background-image: url('http://www.mypicx.com/uploadimg/1312875436_05012011_2.png'); 
} 
#rachel { 
    background-image: url('http://www.mypicx.com/uploadimg/1932001963_05012011_1.png'); 
} 
#martin { 
    background-image: url('http://www.mypicx.com/uploadimg/2082029375_05012011_3.png'); 
} 

這個例子演示了我想達到的目標。

HTML由Rails 3應用程序生成。它應該顯示特定組中的所有用戶(此信息存儲在數據庫中)。換句話說,要顯示的用戶列表可能會有所不同。

的問題是,我不希望有這樣的代碼:

#username { 
    background-image: url('/path/to/username/sprite'); 
} 

爲每個現有的用戶名。而且,如果添加新用戶,我不想更改CSS。

現在的問題是:是否有可能實現相同的效果使用外部CSS

+0

我在你的例子中看不到任何圖像。我很想知道懸停狀態是什麼樣子。 – 2011-05-01 05:13:19

回答

3

就在網上的每個div background-image樣式屬性:

<div style="background-image: url('http://www.mypicx.com/uploadimg/1312875436_05012011_2.png');" id="julia" class="photo"></div> 
<div style="background-image: url('http://www.mypicx.com/uploadimg/1932001963_05012011_1.png');" id="rachel" class="photo"></div> 
<div style="background-image: url('http://www.mypicx.com/uploadimg/2082029375_05012011_3.png');" id="martin" class="photo"></div> 

沒有必要使其複雜化。

+1

我很確定這是你需要做的。內聯樣式不是爲了讓人們懶惰而設置的。他們有時是正確的做法。 – 2011-05-01 05:15:18

+0

這就是我想要的。但是,令人驚訝的是,它不起作用:http://stackoverflow.com/questions/5846637/why-an-inline-background-image-style-doesnt-work-in-chrome-10-and-internet-exp – 2011-05-01 05:21:04

0

您可以將圖像移動到您的HTML中,然後讓您的CSS將懸停標籤應用於圖像,就像您設置的一樣。

難以測試,因爲圖像主機不喜歡盜鏈。就拿這裏看看fiddled

HTML

<div id="julia" class="photo"><img src="http://www.mypicx.com/uploadimg/1312875436_05012011_2.png"/></div> 
<div id="rachel" class="photo"><img src="http://www.mypicx.com/uploadimg/1932001963_05012011_1.png"/></div> 
<div id="martin" class="photo"><img src="http://www.mypicx.com/uploadimg/2082029375_05012011_3.png"/></div> 

CSS

.photo img { 
    width: 60px; 
    height: 60px; 
    display: inline-block; 
} 
.photo img:hover { 
    background-position: -60px 0; 
} 
+0

我以爲使用'img',但我無法弄清楚如何使它工作。你的例子與我的做法不一樣:( – 2011-05-01 04:43:03

0

如果你的外部CSS文件是靜態的,然後它在邏輯上是不可能的,我想,既然URL信息是動態的。

編輯: 如果我理解正確的話,你的問題是不是讓懸停招工作(因爲它的工作原理...),但是如何設置背景圖像屬性爲每一個DIV(每次都有不同的值 - 動態信息)。

因此,像這裏的其他人所說的可以使用PHP,jsp等頁面的動態呈現。

也就是說,也許你可以使用一個動態的css文件,你寫在服務器端。 (但很奇怪)

http://css-tricks.com/can-we-prevent-css-caching/

0

你是什麼意思外部做?單獨的文件或css文件完全來自不同的機器?

據我所知,這些圖像改變的唯一方法是如果您將它設置爲更改(動態)爲每個用戶。假設其照片的路徑存儲在數據庫中,則可以使用php或其他動態語言來嵌入img元素,其中src在html模板中是動態的。

例子:

<?php 
function getUserImage(){ 
//code to get img path from database 
return result; 
} 
?> 
<img src="<?php print getUserImage(); ?>" alt="" /> 

取決於誰登錄,圖像就會從數據庫中的用戶ID不同變化。

+0

獲取鏈接到這張照片不是問題我猜的主要問題是可以用'img'創建一個精靈嗎? – 2011-05-01 04:44:34

+0

我認爲精靈很大圖像只是在位置操縱?但你有不同的圖像加載在css中。 – robx 2011-05-01 04:51:13

+0

也許嘗試smartsprites。我沒有用過它自己,但看起來很好的精靈記錄;) http://csssprites.org/ – robx 2011-05-01 04:57:03

相關問題