2012-04-04 43 views
4

從現在開始,在我工作的網站之一的設計中,我一直使用圖形來裝飾標題部分,該部分由下部的白色對角線分區和上部的透明區域組成。結果是這樣的:如何顯示雙色區域?

enter image description here

如果我改變上面的顏色,作爲圖像在其上部區域是透明的效果似乎完美:

enter image description here

現在,我需要允許用戶改變頁面背景,這就是問題所在:

enter image description here

背景更改爲紅色,但用於裝飾標題的圖像不會更改。

有沒有什麼辦法可以讓用戶更改背景而不會破壞標頭裝飾?

請注意,以不同顏色存儲裝飾圖像的副本不是一個選項,因爲我允許用戶選擇任何24位顏色。另外,由於多個用戶可能訪問同一個文件,因此要實時更改圖像(如explained here)不是一個選項。

+2

使用透明度PNG。 – Yoshi 2012-04-04 16:45:52

+0

我使用的圖像是具有透明度的PNG(上部區域是透明的) – Ivan 2012-04-04 16:47:57

+2

然後檢查圖像元素(或任何父元素)的背景顏色。也許添加一個鏈接到頁面,所以我們可以看看。 – Yoshi 2012-04-04 16:50:28

回答

0

以下添加到與背景圖像的DIV:

position: absolute; 
top: 0px; 
right: 0px; 

目前的問題是,背景不能與背景圖像重疊的股利。添加position: absolute爲您的div提供某種「幽靈盒子」模型,從而允許身體背景重疊。

P.S .:你也可以玩z-index如果你想。

2

你可以嘗試使用數據URI實時改變圖像:https://developer.mozilla.org/en/data_URIs

與數據URI,你可以這樣做如下:<img src="data:image/png;base64,SGVsbG8sIFdvcmxkIQ%3D%3D" />。通過生成一個新的圖像並將src屬性設置爲新的數據URI,可以在JS中動態更改圖像。

你需要找到合適的格式來生成JS中的圖像。我之前使用過pnglib.js,它可以工作,但可能比您想要的要慢。您可能需要測試一些不同的庫和圖像格式以查看哪些可以快速生成。此外,使圖像儘可能小 - 應該只是對角線分割的區域,而向右的區域可以用div代替。

或者,您可以通過腳本生成唯一的映像服務器端。製作一個採用GET參數作爲背景顏色的腳本並生成適當的圖像(對於PHP,您可以使用GD或IMagick)。優點是服務器可以生成圖像並將其發送到客戶端的速度比客戶端可以在JS中生成更快。