Sto creando una funzionalità di tipo tab con gli elementi <ul>
e <li>
e ho notato questo tipo di comportamento imprevisto con i CSS background-color: inherit
.
Uno si aspetterebbe che inherit
non significhi in realtà transparent
, ma piuttosto child.background-color == parent.background-color
(perdonare lo pseudo-codice).Eredita CSS per il colore di sfondo sconosciuto è effettivamente trasparente
Il mio codice è abbastanza semplice, ma ho un problema: Sto sviluppando per condizioni variabili. Ciò significa che non potrei mai sapere quale colore di sfondo sarà usato con il mio codice, e non voglio presentarmi il mio.
Ho preparato uno JSFiddle, in cui lo sfondo è impostato in modo casuale sul caricamento della pagina, per imitare la casualità della destinazione del mio codice. Il problema ovvio è che la scheda attiva sembra terribile con la sua preimpostazione di colore di sfondo. Così, l'ho cambiato in background-color: inherit
. (Vedi JSFiddle 2)
Mentre questo ovviamente risolto il problema di fondo, il bordo dell'elemento di sotto (cg_content
) iniziato mostrando di nuovo, poiché la proprietà inherit
, agisce come transparent
, invece di ciò che avviene quando v'è un insieme sfondo- colore.
La domanda è: C'è un modo per ereditare il colore di sfondo effettivo senza Javascript?
In caso contrario, potresti suggerire un modo migliore per rendere queste schede belle senza colori preimpostati?
P.S .: Il contenuto <div>
non deve essere un elemento figlio degli elementi <li>
, poiché queste schede condividono alcuni contenuti.
P.S.2: Non riesco a rendere più chiaro, che ovviamente so come farlo con JS. Io proprio non voglio.
Vorrei anche consigliarvi di liberarmi del contenitore div per l'ul. La sua rimozione non cambia affatto il risultato e non è necessario generare una nuova regola css e un altro elemento con un id. – Cadoc
Grazie @Quentin. Questa è davvero una soluzione alla versione semplificata del mio codice. Ma nell'esempio del mondo reale, il mio codice potrebbe far parte di un pronipote dell'elemento con il colore di sfondo effettivo e non ho alcun controllo CSS sugli elementi in mezzo. Qualche idea con quello? – mavrosxristoforos
Non è possibile, in CSS, ottenere che un elemento prenda il suo sfondo da qualche altro elemento arbitrario (o addirittura da un antenato). Puoi essere specifico o ereditare dal genitore. – Quentin