2015-06-23 13 views
5
<!doctype> 
<html> 
<head> 
    <style> 
     div { 
      background:rgba(0,255,255,0.3); 
     } 
     #div1 { 
      width:300px; 
      height:300px;   
     } 
     #div2 { 
      width:200px; 
      height:200px;   
     } 
    </style> 
</head> 
<body> 
    <div id="div1"><div id="div2"></div></div><br/> 
</body> 

CSS sovrapposto rgba transpanrency

ciò che è la realtà calcolato trasparenza delle div2? Sono confuso. E 'un numero sconosciuto che non è 0,3 + 0,3 o 0,3 + 0,3 * 0,3

+0

Sembra 0.51, ma non ho idea di come calcolarlo: http://jsfiddle.net/rf3p1yLg/1/ – passatgt

+0

controllare la console degli sviluppatori? –

risposta

0

Dal momento che è stato applicato l'opacità in div{} allora questo sarebbe .3 per #div1{} e .3 * .3 = .09 per #div2{} come # div1 ha valore di opacità .3 e # div2 anche usa l'opacità ma al momento è in possesso di .3 quindi verrà moltiplicato per i bambini.

+0

L'ho provato in Photoshop e sono riuscito a ottenere lo stesso colore usando il 51% come opacità – passatgt

+0

Hai provato a utilizzare opacity .3 sul primo livello e .3 sul secondo livello? Questo sarà simile a come hai scritto in CSS. Ma efficacemente, il 51% potrebbe trovare il colore anche come css. –

+0

https://cloudup.com/cgZGi_Ilw9u – passatgt

0

sua

(0,3 + 0,3) - (0,3 * 0,3) = 0,51

Prima di tutto bisogna aggiungere sovrapposizione valori di trasparenza, e sottrarre la loro moltiplicazione. Perché? Non lo so. Non so come faccio a saperlo, è solo una di quelle cose come la spaziatura delle lettere da PhotoShop a CSS, È necessario dividere il valore di PS da 1000, e ottieni il valore in ems. Ci scusiamo per l'offtopic.

6

La somma dei canali alfa può essere calcolato come:

alpha_top + alpha_bottom * (1 - alpha_top) =
0,3 + 0,3 * (1 - 0,3) =
0,3 + 0,3 * 0,7 =
0,3 + 0,21 =
0,51

Per ulteriori spiegazioni, vedi Alpha Compositing @ wikipedia, che elenca la formula come:

formula

o

formula

Questo è essenzialmente la stessa formula used by Bogdan Kuštan e può anche essere trovato in this answer by bwoebi.

+0

Molto interessante. Grazie per averlo indicato. –

+0

risposta davvero chiara. ti aiuta moltissimo grazie mille –

+1

@jinxinni Se questa risposta ha risolto il problema, ti preghiamo di accettarlo per poter chiudere il problema. Si prega di consultare [Cosa devo fare quando qualcuno risponde alla mia domanda?] (Http://stackoverflow.com/help/someone-answers) –

Problemi correlati