Sistema de votos con CSS (CSS Rating Star)

Más de uno de nosotros nos hemos encontrado con crear un sistema de votos factible y práctico. Como vemos en Youtube o en Amazon. La mayoría de ejemplos que encontramos por la Web, estan desarrollados con JavaScript que funcionan correctamente bien, pero ya sabemos que si lo tenemos desactivado ya no nos sirve de mucho.

A continuación vemos como crear un sistema de votos o Rating Star únicamente con CSS, de esta manera evitaremos usar Scripts para conseguir el efecto deseado.

En el ejemplo solo se usa una imagen con 2 estrellas, una para el estado inicial y otra con el hover. De esta forma prescindimos de crear varias imágenes para cada valor de cada estrella. Debajo vemos el ejemplo ya funcionando.

Ejemplo del Sistema de votos:

HTML


CSS

.star-rating {
	list-style:none;
	margin: 0px;
	padding:0px;
	width: 100px;
	height: 20px;
	position: relative;
	background: url(star_rating.gif) top left repeat-x;
}
.star-rating li {
	padding:0px;
	margin:0px;
	float: left;
}
.star-rating li a {
	display:block;
	width:20px;
	height: 20px;
	text-decoration: none;
	text-indent: -9000px;
	z-index: 20;
	position: absolute;
	padding: 0px;
}
.star-rating li a:hover {
	background: url(star_rating.gif) left bottom;
	z-index: 1;
	left: 0px;
}
.star-rating a.one-star {
	left: 0px;
}
.star-rating a.one-star:hover {
	width:20px;
}
.star-rating a.two-stars {
	left:20px;
}
.star-rating a.two-stars:hover {
	width: 40px;
}
.star-rating a.three-stars:hover {
	width: 60px;
}
.star-rating a.three-stars {
	left: 40px;
}
.star-rating a.four-stars {
	left: 60px;
}
.star-rating a.four-stars:hover {
	width: 80px;
}
.star-rating a.five-stars {
	left: 80px;
}
.star-rating a.five-stars:hover {
	width: 100px;
}

CSS3 y sus Impresionantes Características

Introducción

Con la versión tres del CSS, muchas características emocionantes serán ejecutadas. CSS3 lleva a mayor flexibilidad y hace mucho más fácil reconstruir efectos previamente complejos. Muchas reglas para ahorrarnos tiempo se están aplicando para CSS3 como: text-shadow, box-sizing, opacity, multiple backgrounds, border-radius, border-image, multi-column layout, etc… Aunque solamente los navegadores más modernos soportan actualmente estos efectos.

En este artículo hecharemos una ojeada a algunas características interesantes de CSS3 que puedes poner en práctica en tus maquetas Web.

MÓDULO DEL COLOR CSS3

CSS3 soporta más color y una gama más amplia de las definiciones del color. Los nuevos colores que proporciona CSS3 es HSL, CMYK, HSLA y RGBA. Este PowerPoint explica con detalle los colores en CSS3 y cómo usarlos.

Nuevo formato de colores en CSS3

Ver otro ejemplo

BORDES CON DEGRADADOS

Puedes obtener bordes con degradados usando: -moz-border-radius / -webkit-border property.

Bordes con degradados

BORDES CON IMAGEN

Las propiedades generalmente de los bordes en CSS no son suficientes. Si quieres utilizar las imágenes para los bordes, CSS3 soporta imagen en los bordes a través de las porpiedades border-image y border-corner-image.

Bordes con imagen

ESQUINAS REDONDEADAS O BORDES REDONDEADOS

A continuación se demuestra cómo crear fácilmente las esquinas redondeadas para cualquier caja usando border-radius y background position.

Esquinas redondeadas

Ver otro ejemplo

CAJAS CON SOMBRA

La propiedad de CSS3 box-shadow permite agregar un efecto de sombra sin usar imágenes a un elemento seleccionado. Box-shadow es soportado actualmente del Safari 3+ y Firefox 3.1+.

Cajas con sombra

Ver otro ejemplo

MÚLTIPLES IMÁGENES DE FONDO (MULTIPLE BACKGROUND IMAGES)

Si quieres agregar al de una caja o a un párrafo, CSS3 te permite aplicar múltiples imágenes de fondo a un elemento.

Múltiples imágenes de fondo

MÚLTIPLES COLUMNAS (MULTIPLE COLUMNS)

Este módulo de CSS3 permite colocar los textos en varias columnas de forma mucho más simple usando las propiedades: -moz-column-count and -moz-column-width. Si tienes un texto en tu págia Web demasiado de largo, esta propiedad de CSS3 podría serte realmente útil.

Múltiples Columnas

SOMBRA PARA TEXTO

¿Necesitas usar Photoshop o Fireworks para crear sombras para el texto? La propiedad text-shadow de CSS3 permite agregar una sombra a cada letra del texto. Esta propiedad no es nueva en CSS3, fue propuesto originalmente en CSS2, pero quitado en CSS 2.1.

Sombra para Texto

BOX-SIZING Y BOX-MODEL

La propiedad Box-sizing de CSS3 permite especificar el comportamiento del navegador calculando el ancho de un elemento y controlando si una caja es redimensionable.

Box-sizing y Box-model

Ver otro ejemplo

OPACIDAD EN CSS3 (OPACITY)

Aunque, la propiedad opacity de CSS se usa actualmente, CSS3 desarrolla más el uso de esta propiedad. Puede fijar la transparencia de la caja, de la imagen y del texto usando la propiedad Opacity.

Opacity CSS3

SELECTORES CSS3

¿Estás confuso con todos los nuevos selectores CSS3? Este artículo proporciona la explicación más útil de los selectores CSS3.

Selectores CSS3

CSS3 TEMPLATE LAYOUT CON JQUERY PLUGIN

Este plugin permite que los Maquetadores Web usen: W3’s CSS Template Layout Module usando jQuery

CSS3 Template Layout con jQuery Plugin

PERSONALIZANDO FUENTE CON CSS3

Hoy en día utilizamos formas alternativas para personalizar la fuente como por ejemplo: typeface.js. Pero ahora con CSS3 lo tendremos mucho más facil y accesible.

CSS3 Personalizando Fuente con CSS3

CREANDO UNA GALERÍA POLAROID CON CSS3 AND JQUERY

El diseñador Marco Kuiper nos demuestra cómo crear una galería polaroid combinando CSS3 y JQuery.

Creando un Galería Polaroid con CSS3 and jQuery

Ver Demo

TOOLTIP CON CSS3

Este artículo demuestra como crear un tooltip usando pseudo-elementos :before (or :after) combinados con pseudo-clases :hover.

Tooltip con CSS3

Ver Demo

Modelo de Caja (Box Model Hack)

Como ya sabemos todos no todas las versiones de los navegadores tienen los mismos parámetros de referencia para trabajar con algunas de las propiedades y valores de las hojas de estilo. Todos nos hemos “roto” la cabeza más de mil veces con las propiedades de CSS en distintos navegadores y con su comportamiento en cada uno de ellos. En especial nuestro amigo Internet Explorer 6.

Modelo de caja

El caso más común de todos es el famoso modelo de cajas. Debido a que los “cajas” o DIVs es lo que más usamos a la hora de maquetar en distintos navegadores.

Aclarando el problema…

Recordad que los problemas comienzan cuado trabajamos con diseños estáticos. Nuestra caja tendrá un ancho dado, pero no todos los navegadores interpretarán ese ancho de la misma manera. Según el W3C el ancho de una caja se mide desde el límite interno del relleno izquierdo (left-padding) hasta el límite interno del relleno derecho (right-padding).

En caso de no existir relleno se toman los límites internos izquierdo y derecho del borde (border-right y border-left). Cuando Microsoft lanzó su Internet Explorer 5 para Windows (IE5/win) no respetó éste estándar, interpretando la propiedad width como el ancho comprendido entre los límites exteriores del borde (border-left y border-right).

Para verlo con más claridad supongamos un ejemplo sencillo: una caja de 100 pixeles de ancho, 10 de relleno, 5 de borde y 10 de márgen, todos ellos uniformes.

El elemento DIV


Aquí el contenido de la caja

Aplicando CSS

div {
width: 100px;
padding: 10px;
border: 5px solid #000;
margin: 10px;
}

En la imagen siguiente (en la que se ha aplicado un color al padding únicamente con fin ilustrativo) puede verse una representación de la diferente interpretación entre el IE5/IE6 y los demás navegadores y anticipar las perjudiciales consecuencias para el diseño final.

Problema modelo de caja en navegadores

Solución

La solución y especificación del modelo de caja la proporcionamos en una página externa para mejor visualización, el enlace es el siguiente:

Modelo de Caja (Box Model hack)

Reseteadores de estilos para CSS

Todos nos hemos encontrado con el problema de la diferencia de estilos por defecto que hay entre los distintos navegadores. Sobretodo con “nuestro amigo” IE6. Para evitar minimizar ese problema, podemos establecer una serie de estilos que reseteen la página y la dejen con unos estilos iguales de partida para todos los navegadores.

Con el reseteo de estilos, nos aseguramos un comportamiento parecido en los distintos navegadores. Por supuesto, esto no va a hacer que si maquetamos para el navegador X, se vea todo correcto en el navegador Y. Pero si nos aseguramos que los elementos partan con unos estilos iguales.

Por ejemplo, ¿como se comporta por defecto una lista no numerada tipo “ul” en los distintos navegadores? Pues cada uno hace las cosas a su manera, cambia el bullet, los margenes, el padding, etc. Con el reseteo, podemos dejar la lista “limpia” para aplicar nuestros propios estilos.

Yo uso el de Eric Meyer’s CSS Reset y me va bastante bien.

Aqui tienen una buena colección de reseteadores.

CSS Print – Genérico

Siempre a veces las circunstancias del proyecto nos exigen que la Web que hemos maquetado se vea también bien cuando la imprimos. Y para ellos personalizamos una hoja de estilo únicamente para esto. Por este motivo adjuntamos una hoja de estilos geénerica para el modo de impresión de la página.

/*basado en http://code.google.com/p/hartija/ y mejorado por Technosite */
*{
background-color:#fff !important;
background-image:none !important;
border:0 !important;
bottom:auto !important;
float:none !important;
height:auto !important;
left:auto;
margin:0 0 .5em !important;
min-height:1px !important;
padding:0 !important;
overflow:visible !important;
position:relative !important;
right:auto !important;
text-align:left !important;
top:auto !important;
width:auto !important
}
/* */
#leftContent, #header, #footer, #migas{
display:none
}
#rightCol{
width:95%
}
/* Links */
a:link[href^="http://"]:after, a[href^="http://"]:visited:after{
content:" (" attr(href) ") ";font-size:x-small
} a[href^="http://"]{
color:#000
}