2014-09-04 98 views
3

我正在嘗試使用角度向某個元素應用漸變,但與ngStyle沒有這樣做。ngStyle中的AngularJS多個背景

這裏是什麼,我儘量做到一個例子: http://run.plnkr.co/plunks/mwJBcWaJ1hqOUCsSyy8a/

舊的鏈接,不工作了http://run.plnkr.co/maDs3PSWw4Y5tDfb/

在這個例子中我使用的是普通style="{{css}}",這是不推薦的方法如in the documentation(短版本,步驟5)所述。它不會在IE < = 11

渲染如果我嘗試使用ng-style="css"和設置是這樣的:

$scope.css = { 
    background: '-webkit-linear-gradient(' + gradient + ')', 
    background: '-moz-linear-gradient(' + gradient + ')' 
    … 
} 

你會看到明顯的問題,css對象可以只包含一個實例background

我想不出許多情況下,我必須這樣瀏覽器前綴。 AngularJS是以什麼方式解決這個問題,還是有一個IE < = 11解決方案?

回答

2

這是一個有趣的問題,我不認爲一個解決方案的那一刻,雖然看到的漸變之前IE 10不存在有可能是一個解決辦法:

對於IE 10,9 & 8你可以使用它,因爲沒有衝突存在。

$scope.css = { 
    '-ms-filter' : "progid:DXImageTransform.Microsoft.gradient ("+iegradient+")", 
    'background' : "linear-gradient("+gradient+")" 
}; 

style="{{css}}"將爲所有其他現代瀏覽器做(即包括styleng-style)。

注:我假設style={{}}將在< IE11

失敗默默如果這不適合你,你總是可以創建一個特定的指令背景梯度。如果您在評論中需要幫助,請告訴我。

+0

嗨,謝謝你的回答。 – 2014-09-05 07:59:04

+0

我花了很長時間來編輯評論......我剛剛看到連接到該pnk的鏈接不工作,我解決了這個問題。你的解決方案更具體一點,應該做的伎倆......現在回到擺脫ie-gradients – 2014-09-05 08:05:29

+0

@TobiasKOpelke,看到你的工作plunker:創建一個指令與兩個div改變其大小不是更容易相對於另一個比使用不受支持的梯度(在傳統IE中) – 2014-09-05 08:15:27