Voglio avere XHTML + barra di avanzamento CSS con colori a contrasto tra aree di sfondo piene e vuote.Colore del testo della barra di avanzamento CSS per sfondi pieni e vuoti a contrasto?
Ho un problema con il colore del testo. Perché gli sfondi pieni e vuoti sono troppo contrastati (questo è un requisito), per rimanere leggibili il testo dovrebbe essere a due colori per essere in contrasto con entrambi. L'immagine dovrebbe spiegarlo meglio delle parole:
Progress bar with dark blue filled area and white empty background http://drdaeman.pp.ru/tmp/20090703/progress-bar-text-example.png Example of the problem http://drdaeman.pp.ru/tmp/20090703/progress-bar-text-problem.png
mio attuale implementazione della barra di progresso è banale, ma come esempio di cui sopra mostra, il testo può essere difficile da leggere, in alcuni casi, che è esattamente un problema Voglio risolvere.
Il mio attuale (semplificato) tentativo di implementazione (non riesce, perché overflow: hidden
non funziona senza il posizionamento div.progress
che non posso posizione a causa di interno span
s' width
):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Progress bar test</title>
<style type="text/css">
div.progress_bar {
border: 1px #ccc solid; position: relative;
text-align: center; height: 32px;
}
div.progress_bar .progress {
height: 32px;
overflow: hidden; /* This does NOT work! */
}
div.progress_bar .progress div {
position: absolute; width: 100%; height: 32px;
z-index: 30; overflow: hidden;
background-color: #44a;
}
div.progress_bar span {
position: absolute; top: 0; left: 0; width: 100%;
z-index: 20;
color: #000;
}
div.progress_bar .progress span {
position: absolute; top: 0; left: 0; width: 100%;
z-index: 40;
color: #eee;
}
</style>
</head>
<body>
<!-- Can be of any (unknown) width. Think of "width: auto".
The 400px value is just to keep it small on a big monitor.
DON'T rely on it! -->
<div id="container" style="width: 400px;">
<div class="progress_bar">
<!-- div.progress is a dark filled area container -->
<div class="progress" style="width: 51%;">
<!-- Actually dark filled area -->
<div style="width: 51%;"></div>
<!-- Text (white).
Does not clip, even with overflow: hidden on parent! -->
<span>This is a test</span>
</div>
<!-- Text (black) -->
<span>This is a test</span>
</div>
</div>
</body>
</html>
versione dal vivo di quanto sopra: http://drdaeman.pp.ru/tmp/20090703/test2.html
Tentativo precedente: http://drdaeman.pp.ru/tmp/20090703/test.html
Le immagini sono prototipi modificati da GIMP e non esattamente ciò che viene visualizzato in questo codice.
Aggiungi: Grazie a tutti, in particolare a Meep3D, Nosredna e Lachlan! Tuttavia ho ancora un problema: nel mio caso la barra di avanzamento non dovrebbe avere larghezza fissa e prendere tutto lo spazio disponibile in orizzontale (width: auto;
o width: 100%
sono accettabili). Ma senza la regola width: 400px
, il codice di Lachlan si interrompe. E vorrei ancora evitare di usare JavaScript, se possibile.
Qual è, esattamente, il problema con 0% e 100%? – Nosredna
O è un testo nero su sfondo blu scuro (molto difficile da leggere) o testo bianco su sfondo bianco (impossibile da leggere). – drdaeman
Mi manca qualcosa. Perché non renderlo bianco quando è blu scuro e nero quando è bianco? – Nosredna