2012-06-11 87 views
1

我有在頁面在我的Rails應用程序頂部的通用報頭圖像的css基於佈局。有一個課程模型將有一個可選的徽標圖像,當用戶正在查看課程材料時,它將有望替換標題圖像(如果存在)。這是可能的,我該怎麼辦?更換CSS標題圖片動態

頁眉的CSS低於...

#header{height:116px;width:100%;background:url('logo.jpg') top center no-repeat;} 

該應用程序位於...當一個過程在用戶登錄,和點擊,我想過程中的標誌更換標題圖片。

+1

你可以發表一些代碼嗎? –

+0

或你想要的一些截圖 –

回答

1

如果我理解正確的話您的問題,一些模型定義了一個標誌。在這種情況下,我不會惹惱CSS - 或者至少不會使用資產文件,因爲它們預計是靜態的。

可以定義佈局的標誌:app/viev/layouts/application.html.erb只需創建有這樣的事情:

<head> 
    .. 
    <style type="text/css"> 
    #header { background-image: url("<%= @logo_path || 'logo.jpg' %>"); } 
    </style> 

<head> 
    <% if @logo_path %> 
    <style type="text/css"> #header { .... } </style> 
    <% end %> 

然後,在某些控制器或動作或一些看法,只需設置實例變量@logo_path如果您想讓徽標與默認值不同。

在您的靜態CSS中,您可以定義默認背景圖像,並確保佈局中的此規則比靜態資產中的規則更重要。如果有疑問,請將!important子句添加到佈局中的規則。

當然,如果談到動態你的意思是JavaScript,然後你可能只是包括類似於此的腳本,並直接在給定元素的onclick屬性標識路徑,在某種程度上:

<span onclick="replace_logo('<%= model.logo_path %>')">....</span> 

功能replace_logo不會難寫。

+0

感謝您的詳細回覆。非常感謝。 – Norto23

0

U可以通過定義ü要在標題顯示,然後改變CLAA每個圖像的不同類別在兩個方面做取決於一些變量(控制器或者動作名稱...等),或者通過增加產量:風格頭使用content_for:style覆蓋頭文件樣式取決於您的需求。

0

我只想包括在我的主代碼的CSS的小特定部分,並使用一個簡單的if ... else語句,並改變取決於用戶是否正在或沒有登錄「logo.jpg」。

例如,如果用戶已登錄,徽標變量將被從缺省值改變。如果用戶未登錄,請使用原始徽標。

無法提供更多細節,因爲沒有可用的代碼。