2015-01-30 8 views
6

Ho un sito che viene diviso in più colonne. Ogni volta che un elemento non si trova nella prima colonna e l'opacità è impostata su < 1, non viene visualizzato quando il contenitore ha sia le proprietà di overflow y che di raggio del bordo.Elementi con opacità <1 non rendering in cromo quando non nella prima colonna

Shown in this fiddle

css

.main { 
    -webkit-column-width: 100px; 
    column-width: 100px; 
    max-height: 200px; 
} 

.main > div { 
    overflow-y:auto; 
    border-radius: 6px; 
} 
.opac { 
    opacity: 0.5; 
} 

html

<div class="main"> 
    <div> 
     <div class="opac">element 1</div> 
    </div> 
    <div> 
     <div class="opac">element 2</div> 
    </div> 
    ... 
    <div> 
     <div class="opac">element 30</div> 
    </div> 
</div> 

sto usando Chrome 40.0.2214.94 (64-bit) su OSX 10.10.1. Funziona in Firefox.

+1

Questo è pazzesco. Sembra che dovresti segnalarlo come un bug. –

+0

Sì, sembra un bug di rendering. L'ho riprodotto su Canary 42.0.2291.0 su OSX. Dovresti verificare la presenza di problemi noti e, se necessario, pubblicarlo su crbug.com – joews

+1

, inviato qui https://code.google.com/p/chromium/issues/detail?can=2&start=0&num=100&q=column-width% 20opacity & colspec = ID% 20Pri% 20M% 20Week% 20ReleaseBlock% 20Cr% 20Status% 20Owner% 20Summary% 20OS% 20Modified & groupby = & sort = & id = 453933 –

risposta

1

Poiché lo issue in chrome non sembra che verrà risolto in qualsiasi momento presto e la correzione will-change: opacity non consente gli eventi puntatore/clic, I Ho deciso di calcolare solo quali sarebbero i valori di rgb con l'opacità desiderata e di indicarli nel CSS.

Stavo usando l'opacità per i pulsanti disabilitati e utilizzavo solo alcuni dei tipi di pulsanti di avvio per questo caso particolare, quindi non è un brutto problema.

.btn.btn-success[disabled] { 
    opacity: 1; 
    background: rgb(141, 194, 141); 
} 
.btn.btn-info[disabled] { 
    opacity: 1; 
    background: rgb(120, 187, 206); 
} 
4

Sembra un bug di rendering. Per ora è possibile attenuare l'effetto applicando will-change: opacity agli elementi padre:

.main > div { 
    overflow-y:auto; 
    border-radius: 6px; 
    will-change: opacity; 
} 

http://jsfiddle.net/yx1cp9f8/

+1

yup, che lo ha risolto. Non ho mai saputo di quella proprietà, quindi grazie! Ho inviato una segnalazione di bug quindi spero che non ci sia bisogno della correzione in futuro. –

+1

Anche se gli stili al passaggio del mouse continuano a non funzionare, a meno che non riduca la larghezza della finestra del browser e la espandi nuovamente. Come i tag non mostrano il cursore puntatore o sottolineano se stesso (http://jsfiddle.net/tnyj3mtc/3/). Ma almeno loro si presentano. –

+0

Oppure clicca eventi, quindi i pulsanti non funzionano. –

1

Antera soluzione a quanto pare è quello di impostare l'opacità sul l'elemento principale:

<div class="main"> 
<div class="opac"> 
    <div >element 1</div> 
</div> 
<div class="opac"> 
    <div >element 2</div> 
</div> 
... 
<div class="opac"> 
    <div >element 30</div> 
</div> 

Sembra funzionare. (sembra che tu abbia dimenticato di chiudere i tuoi div, quindi l'ho fatto anche io)

+0

Sospetto che qualsiasi cosa che fa sì che l'elemento genitore venga promosso al proprio livello lo farà. – joews

+0

oops, hai dimenticato di chiuderli quando copi da jsfiddle. Risolto ora. non è possibile disegnare la div dei genitori perché il sito attuale è un po 'più complicato. –

Problemi correlati