2013-05-21 12 views
5

Ho una funzione jQuery che aggiunge un canale Alpha a colore di sfondo quando si verifica un evento.Aggiungi canale al colore di sfondo usando jQuery/JavaScript

Ecco il mio jsFiddle.

CSS

div { background-color: rgb(100,100,100); } 

JavaScript

function addAlphaChannel() { 
    var oldBGColor = $('div').css('backgroundColor'); //rgb(100,100,100) 
    var newBGColor = oldBGColor.replace('rgb', 'rgba').replace(')', ',.8)'); //rgba(100,100,100,.8) 

    $('div').css({ backgroundColor: newBGColor }); 
} 

Questo codice funziona bene, però mi chiedo se c'è un modo migliore di aggiungere/modificare canale alfa?

Qualsiasi aiuto sarà molto apprezzato.

+0

utilizza la proprietà css opacity? (ma questo non è solo per il colore bg) – bwoebi

+0

@bwoebi Un'opacità avrà effetto su tutti i figli del mio elemento –

+1

Sì, l'ho appena detto. Ma no, non vedo alcuna alternativa. – bwoebi

risposta

3

Se si desidera cambiare la proprietà RGBA css utilizzando JavaScript, è necessario utilizzare il sostituire il metodo, tuttavia, è possibile migliorare il vostro codice come questo:

CSS

div { background-color: rgba(100, 100, 100, 1.0); } 

JS

function addAlphaChannel() { 
    var oldBGColor = $('div').css('background-color'), //rgb(100,100,100), 
     newBGColor = oldBGColor.replace(/[^,]+(?=\))/, '0.8'); //rgba(100,100,100,.8); 

    $('div').css({ backgroundColor: newBGColor }); 
} 

Spero che questo possa aiutarti.

+0

Sì, è un altro modo della stessa cosa: usare le stringhe, anche tu non sono sicuro come la tua sintassi RegEx (prova tu stesso), in termini di efficienza tempo/codice, sostituzione specifica (come 'rob' => 'rgba') è più veloce rispetto all'utilizzo di un motore RegEx. –