Medidor de porcentajes con CSS

SafariFirefoxInternet Explorer 7Internet Explorer 6Opera

Para muchos, se justifica definitivamente el uso de hojas de estilo para construir sitios web al momento en que se potencia la gráfica con el código generado por el desarrollador. Este es el caso que muestro a continuación, donde con un truco entre imágenes y código CSS, podemos fácilmente generar mostradores gráficos de porcentajes, los que dependiendo de la creatividad se verán muy atractivos. De ninguna manera lograremos medidores dinámicos, donde la barra se mueva indicando alguna actividad. Con esta técnica podremos a través de porcentajes reales y absolutos entregadas mediante CSS crear diferentes classes, cada una con una instancia de porcentaje que queramos mostrar. Para un mejor entendimiento, el ejemplo de lo que se mostrará:

Ver ejemplo

Primero que nada, las imágenes involucradas. La primera de ellas es la barra de porcentaje, la que tiene 2 partes: lleno y vacío. La segunda es el envoltorio, la que envuelve y deja ver sólo lo que queremos mostrar como cantidad de porcentaje y que será un GIF transparente (el medio de esta imagen es transparente para dejar ver por debajo la barra). Es importante que la barra de porcentaje sea el doble de ancho que su envoltorio, así se mostrará lleno en su 100% y la mitad de esta imagen (el límite entre vacío y lleno) es lo que se moverá dependiendo del porcentaje que entreguemos.

Diagrama composición gráfico con CSS

Para esto se necesita el CSS para la imagen, la que contendrá el envoltorio. Esta imagen estará integrada como HTML, con la etiqueta <img />:

<img src="imgs/contenedor_barra.gif" width="200" height="20" />

Ahora, para agregar la barra y que ésta pase por detrás del envoltorio (en el fonddo será un background de ésta), utilizamos CSS para crear un estilo sólo para la etiqueta <img>:

img {
     background-image: url(imgs/barra.gif);
     background-position: 100% 0;
     background-repeat: no-repeat;
     margin-right: 10px;
}

Con este estilo, le diremos a la imagen que tenga como fondo la barra y que esté vacía. Ahora con diferentes classes (tantas como sean necesarias) mostraremos los niveles de porcentajes. Pero hay un pero. Como en CSS, el background-position se define primero desde lo horizontal (left, right) y luego vertical (top, bottom), y esta propiedad me permite posicionar a través de porcentajes, lo haremos pero a la inversa: si queremos mostrar 10% de nuestra barra, le diremos 90% al position. Es al contrario la cosa, sino el 10% se nos mostrará a la izquierda, y no a la derecha que es la convención occidental a la que estamos acostumbrados. Siguen las classes para varios porcentajes:

img.sesenta {
     background-position: 40% 0;
}
img.diez {
     background-position: 90% 0;
}
img.cien {
     background-position: 0% 0;
}

Ver nuevamente ejemplo.

Sobre el Autor: Jorge Epuñan

Soy quien escribe en este sitio: diseñador gráfico de profesión, desarrollador web por preferencia y amante de la interacción humano-computador. Cuando no pienso en web, salgo a trotar por mis barrios en Santiago, Chile o me junto con amigos a un bar a conversar sobre nuevas tendencias y tecnologías. Twitter profesional y personal, además del Contacto.

  1. Daniel

    OH otro uso interesante al CSS…buen trabajo CSSLAB ..

  2. Nathan_1979

    HOla Jorge!
    Muy buena Página ,
    Una pregunta que me ronda por la cabezota …

    ¿Por que no usas mejor la etiqueta ? para
    hacer el class=”codecss” en vez de usar

    Así estaŕa tabulado sin usar espacios, bueno la verdad es que con pre los datos tienden a salirse del recuadro … cierto?

    Un saludo.

  3. Germán

    Extremadamente simple e increíblemente funcional.

    Yo simplemente añadiría directamente en la imagen el CSS. No es lo más ‘correcto’ pero si generas las páginas dinámicamente, puedes ir desde 0 a 100%. Y no estás limitado a unos valores concretos.

    Gracias!.
    Y genial trabajo.

  1. [...] En CSSLab podremos encontrar un sencillo tip, para lograr a partir de imágenes y un poquito de código Css ...
    Barras de porcentaje en css « Xyberneticos
  2. [...] En CSSLab podremos encontrar un sencillo tip, para lograr a partir de imágenes y un poquito de código Css ...
    Barras de porcentaje en css « Indigo`s Blog
  3. [...] CSSLab podremos encontrar un sencillo tip, para lograr a partir de imágenes y un poquito de código Css [...]
    CSS - Barras de porcentaje at Blog Borchani Studios
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221| viagrea onling viagra tablets name and cost levitra and dapoxetine youtube/viagra cialis extra generic viagra accepting american express buy generic viagra online with no prescription with mastercard generic levitra 20 mg levitra pro buy viagra online in ireland is it illegal to order viagra from outside the united states cheapest generic cialis buy cheap levitra overnight delivery cialis wears off airport security generic viagra generic finasteride viagra for sale using paypal ukAccutane Online Doxycycline online Buy Cheap Lexapro Online No Prescription Prednisone Online Buy Accutane No Prescription